恶搞一下:如何将C++代码和C#代码一起编译

本文介绍了一种极端方法,使C++代码能在C#中直接调用而无需生成DLL,通过将C++源码转换为.NET Assembly再反编译为C#代码实现。同时提供了一个更合理的选择——共同生成单一Assembly。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  前次发了一个随笔《你也使用托管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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值