将托管类对象传递给C++ dll
问题描述:
我有一个在其中有一些托管类的dll。我需要从.exe中设置托管类的属性值并将其传递给dll。但dllexport函数不接受托管类作为参数。有没有其他方法可以做到这一点?将托管类对象传递给C++ dll
答
如果您的.dll是“纯”dll(不是某些COM类或.NET程序集),则无法公开类。你可以,但是暴露出类似
void* CreateInstance(int param1, const char* param2);
int DoSomeMegaWork(void* instance, const int* paramZ);
实施将是 无效*的CreateInstance(参数1,参数2) { YourClass *实例=新YourClass(参数1); //好,只要 instance.DoSomeWork(param2); 返回实例;
}int DoSomeMegaWork(void* _instance, const int* paramZ)
{
YoutClass* instance = (YourClass*) _instance;
return instance.DoSomeMegaWork(paramZ);
}
不要忘了破坏情况下在同一个.dll文件
什么是错误你当你尝试'dllexport'托管类接收? – selalerer
@selalerer __declspec(dllexport)不能用__clrcall调用约定应用于函数。它在文档中。 – Fresher
很不清楚为什么当你尝试导出一个函数时,你会希望* class *工作。显示你的代码。 –