在 F# 中导入/打开 DLL

Posted

技术标签:

【中文标题】在 F# 中导入/打开 DLL【英文标题】:Import/open DLLs in F# 【发布时间】:2020-08-31 19:44:56 【问题描述】:

我想知道是否有可能(二进制,而不是脚本)。

open SDL2

顺便说一句,这是我在 *** 上的第一个问题,请随时向我询问更多详细信息。

【问题讨论】:

欢迎。正如您所写,open module-or-namespace-name 这是一个进口声明,您可以更具体地提出您的问题吗? 您好,您是在尝试使用本机 DLL 还是 .Net DLL? 【参考方案1】:

open ... 打开一个命名空间/模块。它不引用程序集。

假设您打算使用 SDL2 的 C#/.NET 版本,您将需要引用该程序集。如果它以 nuget 包的形式提供,那么您可以将其作为依赖项添加到 Visual Studio(依赖项上下文菜单中的manage nuget packages)或使用以下命令行dotnet add package <packagename>。如果它不是 nuget 包,那么您仍然可以直接引用该程序集。在 Visual Studio 中,您应该能够在依赖项上下文菜单中选择 add project reference,之后您可以选择浏览以选择要使用的 dll。

您也可以将 DLL 文件直接添加到您的项目文件中。首先将DSL2.dll 复制到一个已知位置,例如项目文件夹内的lib 文件夹(如果需要,请添加依赖项),然后编辑项目文件以包含以下内容:

<ItemGroup>
  <Reference Include="SDL2">  <!--the name here can be anything-->
    <HintPath>lib\SDL2.dll</HintPath>
  </Reference>
</ItemGroup>

之后您应该可以打开命名空间(open SDL2)或使用其完全限定名称(例如let x = SDL2.SDL.SDL_...)直接调用各种函数/类型

【讨论】:

或在 .fsx 中,使用 #r @"" 这个答案对我有帮助,所以我进行了一些编辑以改进描述以将独立 dll 添加到项目中;)

以上是关于在 F# 中导入/打开 DLL的主要内容,如果未能解决你的问题,请参考以下文章

如果使用 LoadLibrary 显式链接 dll,则列出从 PE 文件中导入的函数

我们可以从 dll 中导入和导出函数吗

在 64 位 .Net 应用程序中导入 32 位 dll

sqoop如何在增量导入中导入固定数量的行?

ImportError:在使用 cx_Freeze 冻结的应用程序中导入 win32clipboard 时,DLL 加载失败

在 Wamp Server 中导入数据库