到目前为止,我发现我需要将库重新编译为 .dll
而不是 .lib
,启用 /clr
和 /EHa
而不是 /EHsc
。现在我有一个托管 dll,我已将其作为引用添加到我的 C# 项目中。
现在我该如何使用它?
我准备编写一些包装器,但我不知道从哪里开始或如何“查看”我已经获得访问权限的函数。我已经阅读了一些关于类名和函数如何被编译器破坏的内容……我是否需要返回并在各处添加 __declspec
导出(如果是,如何?),或者VS2010 中是否有一个选项说“不要破坏它!”?
有问题的 C++ 库仍在积极开发中,所以我希望我可以尽可能少地修改 C++ 库,只需定期使用一些开关重新编译它,然后在需要时公开新功能。
最佳答案
如果您要编译您的 C++(如果最初是非托管 C++),您需要做的不仅仅是添加/clr 开关。为了让 C# 使用 DLL,您需要创建托管类和其他基于与 C# (.NET) 兼容的 CTS 的类型。
See和引用类。
一本关于该主题的好书(恕我直言)是这本 one
关于c# - 如何在 C# 应用程序中使用 C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011180/