<分区>
我刚刚使用 CLR 编译了一个 native C++ DLL,令人惊讶的是我完全没有错误。在我的 C# 项目中引用该项目后,我注意到没有任何公开的内容可供我使用。我认为这会发生。所以我的问题是如何从我的 c# 项目访问这些?就像我说的那样,该项目使用 CLR 编译得很好,我可以引用它,但我无法访问它。
我是否必须通过使用符合 CLR 的代码包装这些函数来公开它们?或者有没有一种方法可以让我轻松地改变一些东西并能够在 .net 中访问这个 DLL?
<分区>
我刚刚使用 CLR 编译了一个 native C++ DLL,令人惊讶的是我完全没有错误。在我的 C# 项目中引用该项目后,我注意到没有任何公开的内容可供我使用。我认为这会发生。所以我的问题是如何从我的 c# 项目访问这些?就像我说的那样,该项目使用 CLR 编译得很好,我可以引用它,但我无法访问它。
我是否必须通过使用符合 CLR 的代码包装这些函数来公开它们?或者有没有一种方法可以让我轻松地改变一些东西并能够在 .net 中访问这个 DLL?
最佳答案
针对您的情况,有不止一种解决方案:
1) 没有面向对象的 API => 你可以简单地P/Invoke (DllImport)
2) 具有少量实体的面向对象 API => 一个简单的 C++/CLI 包装器
3) 复杂的 OO API => SWIG
4) 如果你需要与整个世界(包括你不知道的技术)的完全互操作=> COM
关于c# - 使用 CLR 编译的 native DLL,我是否必须先公开函数才能使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20086593/