【问题标题】:C++ Type redefinition after including library in unreal engine在虚幻引擎中包含库后的C++类型重新定义
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-11-17
    • 2019-07-20
    • 2014-08-03
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 2018-09-01
    • 2020-10-15
    相关资源
    最近更新 更多