在我的 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 <Game.h>
没有被注释掉时,它会导致错误
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 的情况下编译的主要内容,如果未能解决你的问题,请参考以下文章
如何将我的UserControl从另一个项目(Dll)添加到我的WPF解决方案?