【发布时间】:2018-05-23 06:55:38
【问题描述】:
我有以下问题。我下载了这个虚幻引擎第三方库(https://github.com/nialna/libnoise-UE4-ready)的 git repo,它基本上是原始 libnoise c++ 库的 ue4 64 位端口。
我使用描述的所有步骤(安装 mfc 类,以 64 位构建等)构建它,并将 .lib 文件和包含文件复制到我的游戏项目中。 (如所述) 一旦我在我的项目中包含该库,我就会收到以下错误:
1>C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\corecrt.h(134): error C2953: '_CrtEnableIf<true,_Ty>': class template has already been defined
1>C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\corecrt.h(125): note: see declaration of '_CrtEnableIf<true,_Ty>'
1>C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\corecrt.h(489): error C2011: '__crt_locale_data_public': 'struct' type redefinition
1>C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\corecrt.h(455): note: see declaration of '__crt_locale_data_public'
1>C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\corecrt.h(496): error C2011: '__crt_locale_pointers': 'struct' type redefinition
1>C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\corecrt.h(462): note: see declaration of '__crt_locale_pointers'
1>C:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt\corecrt.h(504): error C2011: '_Mbstatet': 'struct' type redefinition
1>C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\corecrt.h(470): note: see declaration of '_Mbstatet'
这个corecrt.h 文件似乎被多次包含?另一个有趣的事情是有 2 个不同的 Windows SDK 版本输出错误。 (10.0.10240) 和 (10.0.17134.0) 这也可以解释为什么文件被包含两次。
我试图从我的机器中删除旧的 sdk,但它甚至没有在 Visual Studio 安装程序中列出,它只是文件系统的 jm。我从那里删除了它,但仍然出现这些错误。
我用不同的 sdk 版本构建了 lib...没有变化... 我已经在这个问题上花费了几个小时,但我现在一无所知。
【问题讨论】:
-
我在您链接的 git repo 中找不到
corecrt.h文件。我猜您的环境将 SDK 链接了两次(如果这是数字所示)。尝试进一步调查。也许尝试将旧的 SDK 移走,所以它不可用? -
corecrt.h 文件是 windows sdk 的一部分,它从那里链接/包含在 lib 中,显然在 ue4 中。 (至少根据我的理解)。我已经尝试删除旧的 Windows sdk。 (删除 C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0 文件夹)。有趣的是,它在 Visual Studio 安装程序中不是“活动的”。 (我自己从未手动安装过)我尝试通过 VS 安装程序安装和卸载它。 10.0.10240.0 文件夹甚至再次自动创建。甚至在我删除文件夹之后,我从上面得到了一些输出。
标签: c++ unreal-engine4 lib redefinition