我知道所有的程序集都可以以某种方式反编译,但C#& VB应用程序最容易使用(.Net Reflector)等工具反编译成源代码。
所以我的问题是,如果我使用.Net程序集和函数使用C ++对应用程序进行编程,是否可以像使用.Net反射器和这样的工具一样对C#或VB应用程序进行反编译? 好的,如果我在没有使用.Net框架的任何功能的情况下对其进行编程,并且只使用了调用.Net程序集的UI,那么它也会很容易减少吗?
我的问题与此类似:Could this C++ project be decompiled with such tools like a .NET Reflector? 但没有人正确回答他,所以有人可以帮助我吗?
我想使用.Net和C ++将我的应用程序编译成Native和amp;托管代码!
答案 0 :(得分:7)
没有“C ++。Net”。有C ++ / CLI,它是一种类似C ++的语言,可用于将本机C ++代码与.NET世界粘合在一起。您在其中编写的托管代码(ref类)将编译为MSIL。 “本机”代码将编译为MSIL或本机代码。如果要将某些部分编译为本机代码,则需要
#pragma managed(push, off)
void foo() {}
#pragma managed(pop)
在您的来源中。 managed pragma可用于选择每个函数的编译目标。或者,您可以在每个模块没有/clr
标志的情况下进行编译,并将项目设置为生成混合模式程序集。
请注意,将本机类型编组到.NET并返回可能会严重影响应用程序 - 每次跨越本机管理的边界时都会发生这种情况。但是,这种嵌入式本机代码和托管代码之间的互操作比正常的p / invoke快得多。
另请参阅此问题:C++CLI. Are native parts written in pure C++ but compiled in CLI as fast as pure native C++?