【发布时间】:2013-04-08 15:29:10
【问题描述】:
我正在尝试通过编写包装器从 C# 运行非托管本机 C++ 类代码。我的 C++ 代码可以毫无问题地编译为静态库 (.lib)。该代码依赖于其他代码,我相信这些代码都被编译为静态库。由于存在链接器错误,我无法将其编译为 DLL。
我刚刚了解到需要将包装器编译为 DLL,以便可以从 C# 调用它。这是真的?我可以不将我的包装器编译为要在 C# 中使用的静态库吗?
【问题讨论】:
-
听起来你指的是P/Invoke。据我所知,这仅适用于 DLL。如何创建包含本机 C++ 的托管 C++ DLL?这将允许直接在您的 C# 项目中添加引用并访问您的托管 C++ 类。
-
我会采纳您的建议来创建托管 C++ DLL。您是否有一个很好的教程来解释如何将非托管转换为托管?
-
我曾经为 Html Tidy 创建了一个托管 C++ DLL。 Here is my Code Project article,或许对你有帮助。
-
另外,我的大部分依赖项都编译为静态库 - 要创建托管 C++ DLL,是否需要将依赖项重新编译为 DLL?
标签: c# c++ visual-studio wrapper