在 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 @"以上是关于在 F# 中导入/打开 DLL的主要内容,如果未能解决你的问题,请参考以下文章
如果使用 LoadLibrary 显式链接 dll,则列出从 PE 文件中导入的函数
ImportError:在使用 cx_Freeze 冻结的应用程序中导入 win32clipboard 时,DLL 加载失败