在使用QT开发时遇到了许多问题,在解决后在本文中记录下这些问题及解决方法。
1.QT使用第三方库
以SDL和ffmpeg为例,建立的目录如下:
由于qtCreator会在其项目目录外的目录下简历build的目录,为使该build目录可以使用lib和include,所以在外层再添加一级目录。
然后在pro文件中添加库目录和包含目录,pro文件是和平台无关的工程文件。添加库有多种方式,其中一种举例为:
INCLUDEPATH += ../include
LIBS+=-L../lib/avcodec.lib
LIBS+=-L../lib/avdevice.lib
LIBS+=-L../lib/avfilter.lib
LIBS+=-L../lib/avformat.lib
LIBS+=-L../lib/avutil.lib
LIBS+=-L../lib/postproc.lib
LIBS+=-L../lib/swscale.lib
LIBS+=-L../lib/SDL2.lib
LIBS+=-L../lib/SDL2main.lib
这样添加后即可使用第三方库。
2.error: LNK2019: 无法解析的外部符号
一般出现这样错误是由于只有声明没有定义,而在qtCreator中,即便检查很多遍,确定定义肯定在,重新构建每次都会出错,提示error: LNK2019: 无法解析的外部符号
解决方法:先确定pro文件的SOURCES中有没有添加该符号所在文件,若没有则添加,之后将qt生成的build目录删除,重新构建。
qt由于使用qmake产生平台相关的makefile,再由该makefile去构建,所以当更改了项目代码后,makefile文件却没有修改,导致构建时使用的的makefile是旧的,导致编译链接的出错,所以在检查程序无误的情况下,可以尝试重新qmake或者删除build目录,重新构建。