C++ .Net程序集可以轻松反编译吗?

Ala*_*lah 4 .net c++ c++-cli native-code .net-reflector

我知道所有程序集都可以通过某种方式进行反编译,但C#和VB应用程序最容易使用(.Net Reflector)等工具反编译成源代码.

所以我的问题是,如果我使用.Net程序集和函数使用C++对应用程序进行编程,是否可以轻松地对其进行反编译,就像使用.Net反射器和此类工具的C#或VB应用程序一样?好的,如果我在没有使用.Net框架的任何功能的情况下对其进行编程,并且只使用了调用.Net程序集的UI,那么它也很容易被破坏吗?

我的问题类似于这个问题: 这个C++项目是否可以用像.NET Reflector这样的工具进行反编译? 但没有人正确回答他,所以有人能帮助我吗?

我想使用.Net和C++将我的应用程序编译成Native和Managed代码!

Tam*_*lei 7

没有"C++ .Net".有C++/CLI,它是一种类似C++的语言,可用于将本机C++代码与.NET世界粘合在一起.您在其中编写的托管代码(ref类)将编译为MSIL."本机"代码将编译为MSIL或本机代码.如果要将某些部分编译为您需要的本机代码

#pragma managed(push, off)

void foo() {}

#pragma managed(pop)
Run Code Online (Sandbox Code Playgroud)

在你的来源.该管理附注可以用来选择每个函数编译目标.或者,您可以在没有/clr每个模块的标志的情况下进行编译,并将项目设置为生成混合模式程序集.

请注意,将本机类型封送到.NET并返回可能会严重影响应用程序 - 每次跨越本机管理的边界时都会发生这种情况.但是,这种嵌入式本机代码和托管代码之间的互操作比正常的p/invoke快得多.

另请参阅此问题:C++ CLI.本机部分是用纯C++编写的,但是在CLI中编译的速度和纯本机C++一样快?