有些時候,爲了使用別人已經寫好的C#庫文件,咱們須要使用C++調用C#庫文件; 如下作了一簡單的調用工程,步驟以下:.net
一、準備C#庫 (dll文件)
1)建立C#庫:
2)編寫C#類:
3)配置C#庫工程相關配置
(1)命名空間配置,輸出庫文件名配置:
(2)庫文件輸出路徑:
二、準備C++工程:
1)建立C++工程:
2)CLR支持(公共語言運行支持):
3)引用和調用C#代碼:
4)編譯直接運行:
5)運行調試:
三、其餘補充說明:
1)爲何使用gcnew 而不使用 new ?
C++/CLI中使用 gcnew 關鍵字用來表示 在託管堆上分配內存,而且區分其餘指針的區別,使用 ^ 來代替 * 做爲指針含義, 語義上大體以下:
(1)、gcnew返回的是一個句柄(handle), 而new 返回的是實際的內存地址
(2)、gcnew建立的對象由虛擬機託管,而new建立的對象必須本身來管理和釋放
在此不是有C++自己來分配內存空間,而是由其餘虛擬機託管分配,而且不須要C++程序來釋放空間
2)使用#using 宏引入dll庫文件, 而不是 #pragma comment(lib, "")
後面主要用於引入C/C++庫文件
3)執行時可能會出現如下問題:
主要是因爲exe程序加載的dll文件不存在或未找到,能夠:
將C#的庫文件和pdb文件 輸出到一個公共的文件夾下:如: ..\Out\Debug\ 文件夾
將C++的編譯程序exe和pdb文件也輸出到該公共文件夾下,
Linker配置:
四、例程源碼:
http://download.csdn.net/detail/vagent/8953189