以下内容由本人收集资料重新编辑的内容
需要在项目的 .pro 文件中写入加载lib,并且要添加相应的 .h文件进入项目,并引用
核心是 LIBS+=
书写格式:LIBS+= -L直接打地址(库路径) -l库文件(去除后缀)
代码如下(示例):
// 需要在项目的 .pro 文件中写入 加载lib,有多种写法
LIBS += -L. -limm32 -luser32
LIBS += -L$$PWD/./ -limm32 -luser32
分别让程序在不同的情况下调用不同的DLL
代码如下(示例):
Release:LIBS+=-L folderPath // release 版引入的lib文件路径
Debug: LIBS+= -L folderPath // Debug 版引入的lib文件路径
看到网上有人说另外一种用法
LIBS+= 指明lib文件的名称,
LIBPATH += 指明lib文件的路径。最后还要把DLL文件复制到exe所在路径(或者system32)
-L. - - -表示 .pro所在目录
-L$$PRO_FILE_PWD/ - - -表示 .pro所在目录
-L$$PWD/ - - - 表示 .pro所在目录
-LC:/abc/ - - -表示C:/abc/
PWD
指的是当前正在解析的.pro文件的目录的完整路径。 在编写支持影子构建的项目文件时,PWD很有用。
代码如下(示例):
LIBS += -L$$PWD/.......
OUT_PWD
指的是qmake生成的Makefile的目录的完整路径。即构建目录,例如build-??-Desktop_Qt_5_12_8_MSVC2017_64bit-Debug
LIBS += -L$$OUT_PWD/.......
PRO_FILE
正在使用的项目文件的路径。
LIBS += -L$$_PRO_FILE_/......
PRO_FILE_PWD
包含目录的路径,该目录包含正在使用的项目文件。
LIBS += -L$$_PRO_FILE_PWD_/....
linux:LIBS += your_lib_path/your_lib动态库
linux:LIBS += -L your_lib_path -lyour_lib//经过测试了
win32:LIBS += your_lib_path/your_lib
例如:
LIBS += -L lib/pcsc/ -lpcsclite
LIBS += lib/pcsc/libpcsclite.a
需要另外加库的程序最好单独建一个文件夹放置
1. 不加-l时,需要写库文件全名(不推荐)
代码如下(示例):
LIBS += -L$$PWD/lib VideoDecoder.lib
LIBS += -L$$PWD/lib libVideoDecoder.a
2. 加 -l 时,可以将不同编译器库文件名差异屏蔽掉
假设链接msvc库,则只需要去掉文件后缀(一般是.lib):
LIBS += -L$$PWD/lib -lVideoDecoder
假设链接mingw/gcc库,则需要去掉文件前缀"lib",和后缀(一般是.a):
LIBS += -L$$PWD/lib -lVideoDecoder
这样不管在哪个编译器下,都能保证命令一致。
注意:
请牢记msvc库只去后缀
mingw库去前缀和后缀。
因为我遇到一个问题,使用msvc编译工程,工程中调用了boost线程库,boost使用msvc编译为静态库,这个静态线程库的名字比较坑“libboost_thread-vc141-mt-gd-x64-1_71.lib”,按照我们一贯的想法,肯定是去掉前lib,去掉后缀.lib,像这样:
LIBS += -LC:/Boost_msvc_static/lib/ -lboost_thread-vc141-mt-gd-x64-1_71
死活编译不过,找不到库文件。此时,你只要想起来链接msvc库只去后缀,像这样:
LIBS += -LC:/Boost_msvc_static/lib/ -llibboost_thread-vc141-mt-gd-x64-1_71
编译就通过了。
如果需要添加的库文件较多,可以这么写:
MYLIBS=-lLBA -lLBB -lLBC
LIBS+=$$MYLIBS
附《msvc、mingw分别编译动态库与静态库文件名区别》:
msvc动态库:test.dll,test.lib
msvc静态库:test.lib
mingw动态库:test.dll、libtest.a
mingw静态库:libtest.a
这点应该没什么说的
添加所对应的 .h 文件进入项目,并且在想调用的类里面进行 #include (检查是否“ ”与< >错用了)
INCLUDEPATH += your_include_path例如:
INCLUDEPATH += . /usr/local/include(点号后面有空格)
本文为各个博主的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
引用的原文链接:https://blog.csdn.net/zyhse/article/details/105408639,https://zhidao.baidu.com/question/489955709.html,
https://www.cnblogs.com/cppskill/p/6207801.html,
https://blog.csdn.net/u010824101/article/details/83154816?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link,
https://blog.csdn.net/libaineu2004/article/details/89366925