如何:使用 /clr 编译 MFC 和 ATL 代码

本主题讨论如何编译现有的 MFC 和 ATL 程序以面向公共语言运行时。

使用 /clr 编译 MFC 可执行文件或常规 MFC DLL

  1. 右键单击“解决方案资源管理器”中的项目,然后单击“属性” 。

  2. 在“项目属性”对话框中,展开“配置属性”旁边的节点,然后选择“常规”。 在右窗格中的“项目默认值”下,将“公共语言运行时支持”设置为“公共语言运行时支持 (/clr)”。

    在同一窗格中,确保“使用 MFC”设置为“在共享 DLL 中使用 MFC”。

  3. 在“配置属性”下,展开“C/C++”旁边的节点,然后选择“常规”。 确保将“调试信息格式”设置为“程序数据库 /Zi”(而不是 /ZI)。

  4. 选择“代码生成”节点。 将“启用最小重新生成”设置为“否(/Gm-)”。 还要将“基本运行时检查”设置为“默认”。

  5. 在“配置属性”下,选择“C/C++”,然后选择“代码生成”。 确保“运行时库”设置为“多线程调试 DLL (/MDd)”或“多线程 DLL (/MD)”。

  6. 在 Stdafx.h 中,添加以下行。

    #using <System.Windows.Forms.dll>
    

使用 /clr 编译 MFC 扩展 DLL

  1. 按照“使用 /clr 编译 MFC 可执行文件或常规 MFC DLL”中的步骤进行操作。

  2. 在“配置属性”下,展开“C/C++”旁边的节点,然后选择“预编译头”。 将“创建/使用预编译头”设置为“不使用预编译头”。

    或者,在解决方案资源管理器中,右键单击 Stdafx.cpp,然后单击“属性”。 在“配置属性”下,展开“C/C++”旁边的节点,然后选择“常规”。 将“使用公共语言运行时支持进行编译”设置为“无公共语言运行时支持”。

  3. 对于包含 DllMain 及其调用的任何内容的文件,在解决方案资源管理器中,右键单击该文件,然后单击“属性”。 在“配置属性”下,展开“C/C++”旁边的节点,然后选择“常规”。 在右窗格中的“项目默认值”下,将“使用公共语言运行时支持编译”设置为“无公共语言运行时支持”。

使用 /clr 编译 ATL 可执行文件

  1. 在解决方案资源管理器中,右键单击你的项目,再单击“属性” 。

  2. 在“项目属性”对话框中,展开“配置属性”旁边的节点,然后选择“常规”。 在右窗格中的“项目默认值”下,将“公共语言运行时支持”设置为“公共语言运行时支持 (/clr)”。

  3. 在“配置属性”下,展开“C/C++”旁边的节点,然后选择“常规”。 确保将“调试信息格式”设置为“程序数据库 /Zi”(而不是 /ZI)。

  4. 选择“代码生成”节点。 将“启用最小重新生成”设置为“否(/Gm-)”。 还要将“基本运行时检查”设置为“默认”。

  5. 在“配置属性”下,选择“C/C++”,然后选择“代码生成”。 确保“运行时库”设置为“多线程调试 DLL (/MDd)”或“多线程 DLL (/MD)”。

  6. 对于每个 MIDL 生成的文件(C 文件),右键单击解决方案资源管理器中的文件,然后单击“属性”。 在“配置属性”下,展开“C/C++”旁边的节点,然后选择“常规”。 将“使用公共语言运行时支持进行编译”设置为“无公共语言运行时支持”。

使用 /clr 编译 ATL DLL

  1. 按照“使用 /clr 编译 ATL 可执行文件”部分中的步骤进行操作。

  2. 在“配置属性”下,展开“C/C++”旁边的节点,然后选择“预编译头”。 将“创建/使用预编译头”设置为“不使用预编译头”。

    或者,在解决方案资源管理器中,右键单击 Stdafx.cpp,然后单击“属性”。 在“配置属性”下,展开“C/C++”旁边的节点,然后选择“常规”。 将“使用公共语言运行时支持进行编译”设置为“无公共语言运行时支持”。

  3. 对于包含 DllMain 及其调用的任何内容的文件,在解决方案资源管理器中,右键单击该文件,然后单击“属性”。 在“配置属性”下,展开“C/C++”旁边的节点,然后选择“常规”。 在右窗格中的“项目默认值”下,将“使用公共语言运行时支持编译”设置为“无公共语言运行时支持”。

另请参阅

混合(本机和托管)程序集