在虚幻引擎中包含库后C++类型重新定义

问题描述 投票:0回答:1

我有以下问题。我下载了这个虚幻引擎第三方库的 git 存储库(https://github.com/nialna/libnoise-UE4-ready),它基本上是原始 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...没有变化... 我已经在这个问题上花了几个小时,但现在我一无所知。

c++ unreal-engine4 redefinition
1个回答
1
投票

我通过在我的机器上使用与库相同的编译器从源代码构建整个虚幻引擎来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.