C++調用C#庫簡單例程


有些時候,為了使用別人已經寫好的C#庫文件,我們需要使用C++調用C#庫文件; 以下做了一簡單的調用工程,步驟如下:

1、准備C#庫 (dll文件)
 
1)創建C#庫:
 
 
2)編寫C#類:
 
 
3)配置C#庫工程相關配置
(1)命名空間配置,輸出庫文件名配置:
 
 
(2)庫文件輸出路徑:

 
 
2、准備C++工程:
1)創建C++工程:
 
2)CLR支持(公共語言運行支持):
 
3)引用和調用C#代碼:
 
4)編譯直接運行:
 
5)運行調試:
 
 
3、其他補充說明:
1)為什么使用gcnew 而不使用 new ?
     C++/CLI中使用 gcnew 關鍵字用來表示 在托管堆上分配內存,並且區分其他指針的區別,使用 ^ 來代替 * 作為指針含義, 語義上大致如下:
(1)、gcnew返回的是一個句柄(handle), 而new 返回的是實際的內存地址
(2)、gcnew創建的對象由虛擬機托管,而new創建的對象必須自己來管理和釋放
 
 在此不是有C++本身來分配內存空間,而是由其他虛擬機托管分配,並且不需要C++程序來釋放空間
 
  如果想了解CLI更詳細情況,可以參考: http://www.codeproject.com/Articles/6882/A-first-look-at-C-CLI
 
2)使用#using 宏引入dll庫文件, 而不是 #pragma comment(lib, "")
     后面主要用於引入C/C++庫文件
 
 
3)執行時可能會出現以下問題:
主要是由於exe程序加載的dll文件不存在或未找到,可以:
將C#的庫文件和pdb文件 輸出到一個公共的文件夾下:如: ..\Out\Debug\ 文件夾
將C++的編譯程序exe和pdb文件也輸出到該公共文件夾下,
Linker配置:
 
 
4、例程源碼:
     http://download.csdn.net/detail/vagent/8953189
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM