4

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

所以我的问题是,如果我使用 C++ 使用 .Net 程序集和函数编写应用程序,是否像使用 .Net 反射器和此类工具的 C# 或 VB 应用程序一样容易反编译它?好的,如果我在不使用 .Net 框架中的任何函数的情况下对其进行编程,并且只制作调用 .Net 程序集的 UI,是否也很容易进行 decmpile ?

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

我想使用 .Net 和 C++ 将我的应用程序编译为原生代码和托管代码!

4

1 回答 1

7

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

#pragma managed(push, off)

void foo() {}

#pragma managed(pop)

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

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

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

于 2013-07-28T22:05:48.173 回答