场景三:现有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 函数:编程语言