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

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

在C#應用程序中使用C ++類DLL

在C#應用程序中使用C ++類DLL

慕哥9229398 2019-10-17 11:12:40
我有一個非托管的C ++ DLL,它僅導出單個類(不是COM ...這只是一個簡單的C ++類)作為其接口。我想在C#中使用此類,但被告知不能僅將其導入C#中。在我的C#應用程序中使用此類的正確方法是什么?
查看完整描述

3 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

假設Foo類的簡單方法:

  1. 創建一個C ++ / CLI項目,稱為FooWrapper。

  2. 使FooWrapper依賴于非托管dll(但是通常情況下)。

  3. 創建一個托管類ManagedFoo,其中包含單個Foo *類型的私有實例字段。

  4. 在ManagedFoo中提供公共包裝功能,這些功能會轉發到基礎實例字段。

  5. 可選(盡管推薦):

    • 將參數從.net習慣用法(字符串等)轉換為C ++習慣用法(std :: string或char *)

    • 捕獲非托管異常并拋出托管異常

然后,使您的C#代碼依賴于FooWrapper項目/ dll,并確保將非托管dll與其一起正確部署,如何完成取決于非托管dll,但通常在同一目錄中就足夠了。

如果函數不依賴于類的實例,則P / Invoke更為簡單


查看完整回答
反對 回復 2019-10-17
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

有時,提供自己的C接口會更容易。 SWIG設置非常簡單。我使用托管的C ++和C ++ / CLI,它們很好。最簡單的就是做一個C包裝器(并且幾乎所有其他語言都可以使用它,因為大多數語言都可以調用C函數)。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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