1

我用 C 语言编写了一个库,我希望能够在 C#、C++ 和 Python 中使用它(其他语言会很好,但现在没有必要)。该库是在 Linux 中开发的,我已经能够通过 MinGW 在 Windows 上编译它。我遇到的问题是尝试.dll在 Visual Studio 2010 解决方案中添加作为参考。我得到的错误是:

无法添加对“C:\path\to\libmylibrary.dll”的引用。请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。

我花了一些时间试图查看我是否错误地编译了 DLL,但没有看到任何明显的东西。我使用的一些参考资料是thisthisthis

如果需要更多信息,我可以提供一些可编译的示例源代码。

4

1 回答 1

2

有两种方法可以将“DLL”添加到 C# 项目中。

如果 DLL 是 CLR 程序集,这意味着它是遵循 CLR 的托管代码,那么您可以将其添加为“引用”。

如果 DLL 不是 CLR 程序集,您可以使用 P/Invoke 结构手动加载代码。有很多关于 P/Invoke 的在线文档。它很乱,但它有效。您需要使用该[DllImport]属性声明每个 DLL 入口函数,并手动加载 DLL。在 SO 中搜索 p/invoke。

根据您的错误消息,您正在尝试将普通 DLL 作为 CLR DLL 加载。这意味着您必须弄清楚如何使用 P/Invoke。

于 2013-09-03T18:39:41.637 回答