第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

非托管 c++ DLL 從 c# 獲取結(jié)構(gòu)

非托管 c++ DLL 從 c# 獲取結(jié)構(gòu)

C#
人到中年有點甜 2022-06-18 17:48:49
是否可以從 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 回答

?
忽然笑

TA貢獻1806條經(jīng)驗 獲得超5個贊

好吧,我能想到的一種方法是將 JSON 字符串作為 char 數(shù)組從 C++ 傳遞到 C#,然后在 C# 上解析它并獲取數(shù)據(jù)。這是兩種語言都熟悉的一種交流方式。此外,您需要將回調(diào)從 C# 傳遞到 C++ 以允許這樣做,就像在這個問題中解釋的那樣。讓我知道這是否有幫助:)



查看完整回答
反對 回復 2022-06-18
?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

使您的 C# 類型為 COMVisible,這意味著您將能夠從支持 COM 的 C++ 代碼調(diào)用它們,例如,使用ATL



查看完整回答
反對 回復 2022-06-18
  • 2 回答
  • 0 關注
  • 185 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號