主要是使用VS+QT时遇到等一些问题,现在使用等是VS2015(专业版)+ QT5.13.1

这章主要解决遇到的无法解析等外部符号这类问题

1、LNK2001    无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl Process::metaObject(void)const " (?metaObject@Process@@UEBAPEBUQMetaObject@@XZ)  

LNK2001    无法解析的外部符号 "public: virtual void * __cdecl Process::qt_metacast(char const *)" (?qt_metacast@Process@@UEAAPEAXPEBD@Z)  

遇到这种类型我查看主要是使用信号槽提示等,主要原因是没有对应的moc文件,所有需要添加moc文件进去就可以了

生成moc文件等方式:

①、使用cmd进入命令行,

②、然后cd到Qt等安装目录bin文件里面,

③、然后使用moc空格+"头文件"+-o+"cpp文件"后回车,

④、在文件位置就会生成一个对应等moc文件

2、LNK2019    无法解析的外部符号 "public: int __cdecl Process::slotSaveRaw(class cv::Mat,class QString,int,int)" (?slotSaveRaw@Process@@QEAAHVMat@cv@@VQString@@HH@Z),该符号在函数 "private: static void __cdecl Process::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@Process@@CAXPEAVQObject@@W4Call@QMetaObject@@HPEAPEAX@Z) 中被引用  

 

 这种是上一个问题的后续问题,在添加对应等moc文件后还是提示无法解析等外部符号,这种需要将对应等cpp和h文件添加到项目目录中就行了

3、LNK2019    无法解析的外部符号 "class cv::debug_build_guard::_InputOutputArray const & __cdecl cv::noArray(void)" (?noArray@cv@@YAAEBV_InputOutputArray@debug_build_guard@1@XZ),

这种需要添加宏定义,在项目->属性->C/C++->预处理器->在预处理定义中添加宏:CV_IGNORE_DEBUG_BUILD_GUARD

4、这种就比较简单了,一般是对应的库没有添加导致等

 项目->属性->C/C++->常规:这是添加h文件路径

项目->属性->链接器->常规和输入:是添加对应等lib文件

以上四种方式应该可以解决VS+QT遇到的大部分无法解析的外部符号类型问题

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。