【发布时间】:2012-04-19 07:06:31
【问题描述】:
标题解释。我有本机 C++ dll,我正在为其编写 C++/CLI 包装器,而这些 dll 又将作为参考导入到 C# 中。
问题是在 C# 中我看不到包装器中的类(从 DLL 导入)。
我应该使用哪些关键字以及如何重新声明我的原生 C++ 对象以在 C# 中可见?
【问题讨论】:
-
包装类是公开的吗?声明应为“public ref class { ... };”
-
我知道。我要问的是这样的事情是否可能:
public ref class wrapper_class = native_class;?这种方法可行吗? -
没那么简单。包装器类将承载一个 native_class 对象,并为您想要公开的所有 native_class 方法创建包装器方法。包装器方法只是编组参数并将调用委托给 native_class 对象。
-
好的,那么最简单的解决方案是什么?导致开销最小或重定向成员函数调用的那个?
-
如果您能以某种方式将您的类功能公开为 C 函数,那么您可以使用 P/Invoke。否则,C++/CLI 包装器将继续存在。请参阅下面的答案以获取示例。