在我的 CLR 项目中添加包含会使 WLR 无法在启用 /clr 的情况下编译

Posted

技术标签:

【中文标题】在我的 CLR 项目中添加包含会使 WLR 无法在启用 /clr 的情况下编译【英文标题】:Adding includes in my CLR project gives WLR cannot be compiled with /clr enabled 【发布时间】:2017-08-15 13:31:36 【问题描述】:
// This is the main DLL file.

#include "stdafx.h"

#include "Tga2DCLI.h"
//#include <Game.h>
#include <Windows.h>
Tga2DCLI::Tga2DGame::Tga2DGame()

    //myGame = new CGame();


void Tga2DCLI::Tga2DGame::Init(System::String ^ aVersion, System::IntPtr aHWND)

    HWND convertedHWND = reinterpret_cast<HWND>(aHWND.ToInt64());
    //myGame->Init(L"", convertedHWND);

#include &lt;Game.h&gt; 没有被注释掉时,它会导致错误 C1189 #error: 启用 /clr 选项时无法编译 WRL

我正在尝试创建一个 Windows 窗体 (C#),它显示在图片框中运行的游戏引擎,游戏引擎使用 C++,代码片段来自解决方案中的我的 c++/clr 项目。

我的问题是我不太了解 WRL 错误?所以我不明白如何让它运行。我需要游戏包含来初始化引擎以使其以 Windows 形式运行。

【问题讨论】:

【参考方案1】:

Windows 运行时 C++ 模板库 (WRL) 根本不兼容 C++/CLI。

使用 WRL 编译需要 /ZW 选项。而且这种语言扩展与使用 .NET 所需的/CLR 完全不兼容。

WRL 更接近 COM 而不是 .NET。

【讨论】:

以上是关于在我的 CLR 项目中添加包含会使 WLR 无法在启用 /clr 的情况下编译的主要内容,如果未能解决你的问题,请参考以下文章

程序停止工作,问题事件名称:CLR20r3

如何将我的UserControl从另一个项目(Dll)添加到我的WPF解决方案?

在 SQL Server CLR 程序集中使用 Microsoft Solver Foundation

无法使用 .xib 文件在我的自定义单元格中添加任何内容?

C 文件无法在 c++ Visual Studio 中编译

openssl 包含 Visual Studio 2012 无法识别的路径