首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未解析的外部符号__imp__Inf和__imp__Nan

未解析的外部符号__imp__Inf和__imp__Nan
EN

Stack Overflow用户
提问于 2011-12-22 17:20:35
回答 1查看 3.1K关注 0票数 3

我刚刚尝试用VS2008为WinCE7.0构建Qt,经过大量的代码修改,我成功地编译了主库。

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

代码语言:javascript
复制
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

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

谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-12-27 01:26:44

如果您使用的是Windows,我将假定您是在MSVS中构建的。我经常在没有默认库的情况下开始项目,如果我碰巧接触到来自另一个库的“超出范围”的terriotry,我会在进行的过程中添加我需要的东西。

幸运的是,MSVS在这方面对我很有帮助。只需打开详细编译状态并查看它试图访问的库,然后添加它们:右键单击项目,链接器,显示进度->选择详细

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

当所有其他方法都失败时,只需添加Qt可能需要的所有库(确保禁用了忽略标准库),然后选中VERBOSE并只保留列表中的库。

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8601707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档