場景三:現有C++原代碼,包裝後供C#調用。
C++的原代碼,實際上能夠直接編譯成託管代碼。MFC也好ATL也好……這樣看起來在.NET中最強大的編程語言就是C++了:它不只能夠編寫託管 程序,甚至能夠將標準C++的代碼也編譯成託管程序!其實VC++最強大的地方不止如此,它還在於可以編寫混合了託管和非託管的代碼的程序!!!這樣最大 的好處不只能夠將關鍵代碼直接編譯成非託管的代碼,還能夠避免被反編譯。
假設現有C++代碼以下:ios
咱們只要再增長一個包裝類到工程文件中: c++
而後,改變編譯選項爲「使用公共語言擴展 /clr」就能夠了。這樣,咱們把代碼編譯成DLL文件就能夠供.NET其它語言調用了。
最後,C#中能夠象以下的代碼同樣調用C++類了:編程
場景四:如何在託管C++代碼中混合託管和 非託管代碼
很簡單,只要從#pragma unmanaged編譯指示開始的程序,一率編譯成非託管代碼;要想恢復成託管代碼,只要使用#pragma managed就能夠了。如:app
生成exe文件後,用反編譯程序查看 f 函數:編程語言