如何在 C# 代码中访问 c++ dll 类
本文关键字:访问 c++ dll 代码 | 更新日期: 2023-09-27 18:34:25
我的第三方dll中有一个C++类。
如果我调用 Assembly.LoadFrom(),VS 会引发一个未经处理的异常,因为模块中不包含清单。
我可以使用 DllImport 调用全局函数来获取某个类的实例。
然后如何调用其成员函数之一?
使用 C++/CLI 创建包装器 DLL 公开C++函数
例如:
//class in the 3rd party dll
class NativeClass
{
public:
int NativeMethod(int a)
{
return 1;
}
};
//wrapper for the NativeClass
class ref RefClass
{
NativeClass * m_pNative;
public:
RefClass():m_pNative(NULL)
{
m_pNative = new NativeClass();
}
int WrapperForNativeMethod(int a)
{
return m_pNative->NativeMethod(a);
}
~RefClass()
{
this->!RefClass();
}
//Finalizer
!RefClass()
{
delete m_pNative;
m_pNative = NULL;
}
};
Assembly.LoadFrom 用于加载托管程序集。
对于非托管程序集,需要 P/Invoke。
如何封送 c++ 类