亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何從C#調用C ++ / CLI?

如何從C#調用C ++ / CLI?

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

3 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

在同一過程中,至少有三種方法可以從托管代碼中調用非托管代碼:

  1. C ++ / CLI

  2. 平臺調用

  3. 將C ++包裝在COM對象中

在工作中,我們為此使用C ++ / CLI,它似乎可以工作。


查看完整回答
反對 回復 2019-12-10
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

我將按照此處所述創建標準(非COM / Managed)動態鏈接庫,然后在c#代碼中使用DllImport屬性(平臺調用)來訪問導出的函數。


那篇文章的重點是:


請注意此代碼的方法聲明中的__declspec(dllexport)修飾符。這些修飾符使方法可以由DLL導出,以便其他應用程序可以使用它。有關更多信息,請參見dllexport,dllimport。


與實際的COM互操作包裝器相比,這是一種較輕的替代方案,并且避免了諸如注冊等問題(DLL可以簡單地放置在應用程序目錄中)。


另一種替代方法是It Just Works(IJW)。如果您已經管理過C ++代碼并且需要從其他.NET語言訪問此代碼,那么這可能是一個更好的選擇。但是,如果您能夠/很樂意將非托管C ++轉換為托管C ++,則這只是一個選擇。


查看完整回答
反對 回復 2019-12-10
  • 3 回答
  • 0 關注
  • 692 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號