2016-03-08 115 views
0

我有一个在其中有一些托管类的dll。我需要从.exe中设置托管类的属性值并将其传递给dll。但dllexport函数不接受托管类作为参数。有没有其他方法可以做到这一点?将托管类对象传递给C++ dll

+0

什么是错误你当你尝试'dllexport'托管类接收? – selalerer

+0

@selalerer __declspec(dllexport)不能用__clrcall调用约定应用于函数。它在文档中。 – Fresher

+0

很不清楚为什么当你尝试导出一个函数时,你会希望* class *工作。显示你的代码。 –

回答

-1

如果您的.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文件