将项目从混合模式转换为纯中间语言项目
默认情况下,所有 Visual C++ CLR 项目链接到 C 运行库。 由于这些项目联合使用了本机代码和面向公共语言运行时的代码(托管代码),所以它们被划分为混合模式的应用程序。 编译时,它们被编译为中间语言(IL),也称为 Microsoft 中间语言 (MSIL)。
将混合模式应用程序转换为纯中间语言
移除指向 C 运行库 (CRT) 的链接:
在定义应用程序入口点的 .cpp 文件中,将入口点更改为 Main()。 使用 Main() 指示项目不链接到 CRT。
在解决方案资源管理器中右击项目,选择快捷菜单上的**“属性”**以打开应用程序的属性页。
在“链接器”的**“高级”**项目属性页中选择“入口点”,然后在此字段中输入 Main。
对于控制台应用程序,在“链接器”的“系统”项目属性页中,选择“子系统”字段,然后将该字段更改为“控制台 (/SUBSYSTEM:CONSOLE)”。
备注
不必为 Windows 窗体应用程序设置此属性,因为默认情况下,“SubSystem”字段设置为“Windows (/SUBSYSTEM:WINDOWS)”。
在 stdafx.h 中,注释掉所有 #include 语句。 例如,在控制台应用程序中:
// #include <iostream> // #include <tchar.h>
- 或 -
例如,在 Windows 窗体应用程序中:
// #include <stdlib.h> // #include <malloc.h> // #include <memory.h> // #include <tchar.h>
对于 Windows 窗体应用程序,在 Form1.cpp 中,注释掉引用 windows.h 的 #include 语句。 例如:
// #include <windows.h>
在 stdafx.h 中,添加下列代码:
#ifndef __FLTUSED__ #define __FLTUSED__ extern "C" __declspec(selectany) int _fltused=1; #endif
移除所有非托管类型:
在适当的情况下,将非托管类型替换为对 System 命名空间中结构的引用。 下表列出了常用的托管类型:
结构
描述
表示布尔值。
表示一个 8 位无符号整数。
表示一个 Unicode 字符。
表示时间上的一刻,通常以日期和当天的时间表示。
表示十进制数。
表示一个双精度浮点数。
表示全局唯一标识符 (GUID)。
表示 16 位有符号整数。
表示 32 位有符号整数。
表示 64 位有符号整数。
用于表示指针或句柄的平台特定类型。
表示 8 位有符号整数。
表示一个单精度浮点数字。
表示一个时间间隔。
表示 16 位无符号整数。
表示 32 位无符号整数。
表示 64 位无符号整数。
用于表示指针或句柄的平台特定类型。
指示不返回值的方法;即,该方法的返回类型为 void。