【问题标题】:Adding MinGW compiled DLL to Visual Studio fails将 MinGW 编译的 DLL 添加到 Visual Studio 失败
【发布时间】:2013-09-03 18:28:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# visual-studio-2010 dll mingw


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我没有意识到 Visual Studio 中的引用下列出的子代只是托管代码。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多