gpt4 book ai didi

c++ - 未解析的外部符号 __imp__Inf 和 __imp__Nan

转载 作者:太空狗 更新时间:2023-10-29 23:08:41 24 4
gpt4 key购买 nike

我只是尝试在大量代码修改后使用 VS2008 为 WinCE7.0 构建 Qt,我成功编译了主要库。

在编译 QtScript 库时,我收到以下链接器错误:

1>Linking...
1> Creating library ..\..\lib\QtScript4.lib and object ..\..\lib\QtScript4.exp
1>BytecodeGenerator.obj : error LNK2019: unresolved external symbol __imp__Inf referenced in function "public: static double __cdecl QTWTF::FloatHashTraits<double>::emptyValue(void)" (?emptyValue@?$FloatHashTraits@N@QTWTF@@SANXZ)
1>Executable.obj : error LNK2001: unresolved external symbol __imp__Inf
1>MathObject.obj : error LNK2001: unresolved external symbol __imp__Inf
1>DateMath.obj : error LNK2019: unresolved external symbol __imp__Nan referenced in function "double __cdecl QTWTF::parseDateFromNullTerminatedCharacters(char const *,bool &,int &)" (?parseDateFromNullTerminatedCharacters@QTWTF@@YANPBDAA_NAAH@Z)
1>JSValue.obj : error LNK2001: unresolved external symbol __imp__Nan
1>..\..\lib\QtScript4.dll : fatal error LNK1120: 2 unresolved externals

我完全不知道我错过了哪些库的链接!

谢谢

最佳答案

如果您使用的是 Windows,我假设您是在 MSVS 中构建。我经常在没有默认库的情况下开始项目,如果我碰巧从另一个库中触及“遥不可及”的领土,我会在进行过程中添加我需要的东西。

幸运的是,MSVS 非常擅长帮助我解决这个问题。只需打开 VERBOSE 编译状态并查看它试图访问哪些库,然后添加它们:右键单击项目,链接器,显示进度 -> 选择 V​​ERBOSE

另一种方法是当我检查 MSDN 中的 Microsoft 函数并查看它们在其中声明的库并添加它时(因为 VERBOSE 在我糟糕的输出窗口上可能会过大)。我不知道 Qt 是否有详细的引用文档(也说明了库),但值得一试。

当所有其他方法都失败时,只需添加 Qt 可能需要的所有库(确保禁用 IGNORE STANDARD LIBS),然后检查 VERBOSE 并只保留列表中的库。

假设您拥有项目中的所有库,另一个问题是不匹配的依赖项(右键单击解决方案,启动项目 -> 选择您需要的,[项目依赖项 -> 为指定的库映射每个依赖项)。

还要确保当你导入一个外部库时,lib 是在 Linker->Input 中定义的。

但是,如果您修改了源代码(添加新函数/全局变量或静态变量,或者您修改了函数签名),未解析的外部引用意味着函数/变量定义没有关联的主体。要么实现一个,要么在定义中添加 { };因此,如果是这种情况,请检查错误消息中的函数/变量。

关于c++ - 未解析的外部符号 __imp__Inf 和 __imp__Nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8601707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com