有些時候,為了使用別人已經寫好的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