如何:创建可验证的 C++ 项目 (C++/CLI)

Visual C++ 应用程序向导不会创建可验证的项目。

重要

弃用的 Visual Studio 2015 和 Visual Studio 2017 不支持“/clr:pure”和“/clr:safe”创建可验证项目。 如果需要可验证的代码,建议你将代码转换为 C#。

但是,如果你使用的是支持 /clr:pure 和 /clr:safe 的旧版 Microsoft C++ 编译器工具集,则可以将项目转换为可验证。 本主题介绍如何设置项目属性和修改项目源文件,从而转换你的 Visual Studio C++ 项目以生成可验证的应用程序。

编译器和链接器选项

默认情况下,.NET 项目使用 /clr 编译器标志并将链接器配置为以 x86 硬件为目标。 对于可验证代码,你必须使用 /clr:safe 标志,并且你必须指示链接器生成 MSIL 而不是本机机器指令。

更改编译器和链接器设置

  1. 显示项目属性页。 有关详细信息,请参阅设置编译器和生成属性

  2. 在“配置属性”节点下的“常规”页上,将“公共语言运行时支持”属性设置为“安全 MSIL 公共语言运行时支持 (/clr:safe)”。

  3. 在“链接器”节点下的“高级”页上,将“CLR 映像类型”属性设置为“强制安全 IL 映像 (/CLRIMAGETYPE:SAFE)”。

移除本机数据类型

因为原生数据类型是不可验证的,即使它们没有被实际使用,你也必须移除所有包含原生类型的头文件。

注意

以下过程适用于 Windows 窗体应用程序 (.NET) 和控制台应用程序 (.NET) 项目。

移除对本机数据类型的引用

  1. 注释掉 Stdafx.h 文件中的所有内容。

配置入口点

因为可验证应用程序不能使用 C 运行时库 (CRT),所以它们不能依赖 CRT 来调用 main 函数作为标准入口点。 这意味着你必须显式向链接器提供最初要调用的函数的名称。 (在这种情况下,使用 Main() 代替 main() 或 _tmain() 来指示非 CRT 入口点,但因为必须明确指定入口点,所以此名称是任意的。)

注意

以下过程适用于控制台应用程序 (.NET) 项目。

配置入口点

  1. 在项目的主 .cpp 文件中将 _tmain() 更改为 Main()。

  2. 显示项目属性页。 有关详细信息,请参阅设置编译器和生成属性

  3. 在“链接器”节点下的“高级”页上,输入 作为“入口点”属性值。Main

另请参阅