我有一個用C ++實現的類,它負責程序的算術計算,以及一個使用WPF的接口。我使用C#處理輸入,但是如何使用C ++類呢?我已經看到了一些有關使托管C ++包裝器類與之交互的評論,但我不知道從哪里開始。我也不知道該如何與其他所有代碼一起進行編譯。我真的找不到關于此的教程,谷歌在托管C ++上顯示的內容似乎并沒有幫助。有什么可以幫助我的嗎?在我看來,這似乎并不合理。編輯嘗試了m3rLinEz解決方案,但它給了我BadImageFormatException,我認為這是因為未生成DLL。我做了一切,不知道發生了什么。有任何想法嗎?
3 回答

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
在同一過程中,至少有三種方法可以從托管代碼中調用非托管代碼:
C ++ / CLI
平臺調用
將C ++包裝在COM對象中
在工作中,我們為此使用C ++ / CLI,它似乎可以工作。

ITMISS
TA貢獻1871條經驗 獲得超8個贊
我將按照此處所述創建標準(非COM / Managed)動態鏈接庫,然后在c#代碼中使用DllImport屬性(平臺調用)來訪問導出的函數。
那篇文章的重點是:
請注意此代碼的方法聲明中的__declspec(dllexport)修飾符。這些修飾符使方法可以由DLL導出,以便其他應用程序可以使用它。有關更多信息,請參見dllexport,dllimport。
與實際的COM互操作包裝器相比,這是一種較輕的替代方案,并且避免了諸如注冊等問題(DLL可以簡單地放置在應用程序目錄中)。
另一種替代方法是It Just Works(IJW)。如果您已經管理過C ++代碼并且需要從其他.NET語言訪問此代碼,那么這可能是一個更好的選擇。但是,如果您能夠/很樂意將非托管C ++轉換為托管C ++,則這只是一個選擇。
- 3 回答
- 0 關注
- 692 瀏覽
添加回答
舉報
0/150
提交
取消