是否可以從 c++ DLL 調(diào)用 c# 中的方法?我有良好的溝通 c# -> C++ ,但我希望能夠發(fā)起呼叫 C++ -> c# 來輪詢一些數(shù)據(jù)我的代碼看起來像這樣......主機.h/*define the exporter for the C API*/#ifdef DLL_EXPORT#define DLL_EXPORT __declspec(dllexport) #else#define DLL_EXPORT __declspec(dllimport) #endifclass myClass{public: myCLass(){ //do some initialising } ~myCLass(){ //do some tidying } int getInt(int target) { switch (target) { case 0: return someIntValue; case 1: return someOtherIntValue; default: return 0; } } std::string getString(int target) { switch (target) { case 0: return someStringValue; case 1: return someOtherStringValue; default: return ""; } }}extern "C" { DLL_EXPORT myClass* myClassConstructor(); DLL_EXPORT void DestroySpatialser(const myClass* _pContext); DLL_EXPORT int getInt(myClass* _pContext, int target); DLL_EXPORT void getString(myClass* _pContext, int target, __out BSTR* returnStr);}主機.cppextern "C" { myClass* myClassConstructor() { return new myClass(); } void myClassDestructor(const myClass* _pContext) { if (_pContext != nullptr) { _pContext->~myClass(); delete _pContext; } } //example int getInt(myClass* _pContext, int target) { if (_pContext == nullptr) { return K_ERR_INT; } return _pContext->getInt(target); } void getString(myClass* _pContext, int target, __out BSTR* returnStr) { std::string str; if (_pContext == nullptr) { str = K_ERR_CHAR; } else { str = _pContext->getString(target); } const std::string stdStr = str; _bstr_t bstrStr = stdStr.c_str(); *returnStr = bstrStr.copy(); }}這一切都很好。我想添加從 .cs 應用程序(它將是 3 個浮點數(shù)的結(jié)構(gòu))中獲取值的功能,該應用程序應該從 myClass 的實例中調(diào)用。我不想在 c# 端啟動它(我知道該怎么做)。有什么建議嗎?
- 2 回答
- 0 關注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消