恶搞一下:如何将C++代码和C#代码一起编译
前次发了一个随笔《你也使用托管C++吗?》,结果来了一个提问:
“我想问一下,在能将现有的C++代码直接进行封装,被C#进行调用,而不是去调用DLL,也就是不生成DLL,就在C#下能直接调用VC的工程源文件不?”
我想,提问的人是不是指,现有c++源码,但不想费劲去转换成C#源码,但又想能与C#一起编译。
于是我就给了一个极其变态的方法,纯属恶搞。方法如下:
1 先将C++源码,改用CLR编译选项,编译成.NET的Assembly(DLL文件)。
2 然后用reflector等反编译软件,反编译成C#代码,并导出(reflector有专门的导出插件)。
3 将导出的C#代码,添加上新写的C#代码一起编译。
这种方法生成的代码很是恐怖,强烈建议不要把C++源码就这么丢了,否则后果自负。
附:reflector导出插件见 wssmax博客园《用Reflector for .NET反编译dll文件(.net),把整个dll导出个cs插件》
注:此文虽然有一定的可行性,但纯属恶搞。如有相同的目的,可以参考:《让C++代码与C#代码一起生成一个单一的Assembly》--不过只适合.NET2.0
“我想问一下,在能将现有的C++代码直接进行封装,被C#进行调用,而不是去调用DLL,也就是不生成DLL,就在C#下能直接调用VC的工程源文件不?”
我想,提问的人是不是指,现有c++源码,但不想费劲去转换成C#源码,但又想能与C#一起编译。
于是我就给了一个极其变态的方法,纯属恶搞。方法如下:
1 先将C++源码,改用CLR编译选项,编译成.NET的Assembly(DLL文件)。
2 然后用reflector等反编译软件,反编译成C#代码,并导出(reflector有专门的导出插件)。
3 将导出的C#代码,添加上新写的C#代码一起编译。
这种方法生成的代码很是恐怖,强烈建议不要把C++源码就这么丢了,否则后果自负。
附:reflector导出插件见 wssmax博客园《用Reflector for .NET反编译dll文件(.net),把整个dll导出个cs插件》
注:此文虽然有一定的可行性,但纯属恶搞。如有相同的目的,可以参考:《让C++代码与C#代码一起生成一个单一的Assembly》--不过只适合.NET2.0