QT出现问题 无法解析的外部符号 未找到文件**.obj

转载地址:http://blog.csdn.net/hzt12345hf/article/details/52398000

无法解析的外部符号出现可能的原因:
[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib包. 


[1]只写了类声明,但还没有写实现类,造成调用时无法解析 


[2]声明和定义没有统一,造成链接不一致,无法解析 


[3]没有在项目属性页的链接器的命令行选项加入相应的类包。 


[4]没有在c++包含目录和库目录加入相应的类包路径 


[5]在测试工程中被测文件目录可能需要包含被测类的cpp定义文件 


[6]ICE接口测试时,无法解析可能因为被测文件没有包含进相关的cpp文件,另外,在TestSuite_ProjectRun.h文件中需要包含IProjectRun.h头文件,及相关的头文件(举例)。


[7]import相关的无法解析内容,解决办法是在链接器的依赖项中加入相应的动态库


[8]出现如下错误的原因一般是动态库没有包进来。__imp
ProjectRun.obj : error LNK2019: 无法解析的外部符号 __imp__StartHistoryLocalModule,该符号在函数 “protected: virtual int __thiscall HiRTDB::CProjectRun::DoStart(void)” (?DoStart@CProjectRun@HiRTDB@@MAEHXZ) 中被引用

[9]error LNK2001: 无法解析的外部符号 __imp___CrtDbgReportW
工程属性,C/C++,代码生成,运行时库选择MDd,


[9]无法解析的外部符号”_declspec(dllimport) public: int __thiscall HiRTDB::CTagTree::GetObjectA(int,struct HiRTDB::SBaseReadProps const &,struct HiRTDB::SBaseReadValues &)” (__imp GetObjectA@CTagTree@HiRTDB@@QAEHHABUSBaseReadProps@2@AAUSBaseReadValues@2@@Z),该符号在函数”public: int __thiscall HiRTDB::CStringImpl::Get(int,struct HiRTDB::SStringReadProps const &,struct HiRTDB::SStringReadValues &)” (?Get@CStringImpl@HiRTDB@@QAEHHABUSStringReadProps@2@AAUSStringReadValues@2@@Z) 中被引用

原因可能是工程配置文件中有多余选项,请参考其他模块的配置选项,不要有多余配置。


自己编了个小程序,一开始编译忘记在.pro工程中加入类库,所以导致出现如下图所示错误,加上类库后清除重新编译,发现还是同样的错误,百思不解,搜百度有网友提议删除目录下生成的调试文件夹,然后尝试过后发现此方法可行,这里做个记录,以防以后又发生这样的错误
这里写图片描述


很庆幸我的问题在[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib包. 

因为是从前辈那获取的资源,这里要感谢一下"星星的眼睛"<[email protected]>;,他给的资源是Qt4.8+32位

我现有的系统是Qt5.2+win10_64,

另外Qt5 取消了

    //QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
    //QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));这两个函数。

可利用

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));这一个函数代替


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章