C++ 将外部库添加到Qt Creator项目中
如何将外部库添加到Qt Creator RC1(版本0.9.2)构建的项目中?例如,win32函数C++ 将外部库添加到Qt Creator项目中,c++,winapi,qt,qt-creator,C++,Winapi,Qt,Qt Creator,如何将外部库添加到Qt Creator RC1(版本0.9.2)构建的项目中?例如,win32函数enumprocess()要求将Psapi.lib添加到要生成的项目中。是否使用qmake项目?如果是这样,可以使用变量添加外部库。例如: win32:LIBS += path/to/Psapi.lib 您所指的错误是由于缺少其他包含路径。 尝试添加以下内容: INCLUDEPATH+=C:\path\to\include\files\ 希望它能起作用。 问候。正确的方法如下: LIBS += -
enumprocess()
要求将Psapi.lib
添加到要生成的项目中。是否使用qmake
项目?如果是这样,可以使用变量添加外部库。例如:
win32:LIBS += path/to/Psapi.lib
您所指的错误是由于缺少其他包含路径。 尝试添加以下内容: INCLUDEPATH+=C:\path\to\include\files\ 希望它能起作用。
问候。正确的方法如下:
LIBS += -L/path/to -lpsapi
这样,它将在Qt支持的所有平台上工作。其思想是必须将目录与库名称分开(不带扩展名,也不带任何“lib”前缀)。当然,如果您包含一个特定于Windows的库,这其实并不重要
如果要将lib文件存储在项目目录中,可以使用$\u PRO\u FILE\u PWD
变量引用它们,例如:
LIBS += -L"$$_PRO_FILE_PWD_/3rdparty/libs/" -lpsapi
LIBS+=C:\Program Files\OpenCV\lib
无法工作,因为您在程序文件中使用了空格。在这种情况下,您必须添加引号,因此结果如下所示:LIBS+=“C:\Program Files\OpenCV\lib”。
我建议将库放置在非空白位置;-) 要添加多个库文件,您可以按以下方式编写: INCLUDEPATH*=E:/DebugLibrary/VTK E:/DebugLibrary/VTK/Common E:/DebugLibrary/VTK/过滤E:/DebugLibrary/VTK/通用过滤 E:/DebugLibrary/VTK/Graphics E:/DebugLibrary/VTK/GUISupport/Qt E:/DebugLibrary/VTK/Hybrid E:/DebugLibrary/VTK/Imaging E:/DebugLibrary/VTK/IO E:/DebugLibrary/VTK/Parallel E:/DebugLibrary/VTK/渲染E:/DebugLibrary/VTK/实用程序 E:/DebugLibrary/VTK/VolumeRendering E:/DebugLibrary/VTK/Widgets E:/DebugLibrary/VTK/Wrapping LIBS*=-LE:/DebugLibrary/VTKBin/bin/release-lvtkCommon-lvtksys -lQVTK-lvtkWidgets-lvtkRendering-lvtkGraphics-lvtkImaging-lvtkIO-lvtkFiltering-lvtkDICOMParser-lvtkpng-lvtktiff-lvtkzlib-lvtkjpeg-lvtkexpat-LVTKknetcdf-lvtkexoIIc-lvtkftgl-lvtkfreetype-LVTKfrid-LVTKfrid-lvtkVolumeRendering-LQVKwidgetPlugin-lvtkGenericFiltering
如果您想在客户的机器上部署应用程序,而不是只使用自己的应用程序,我们发现
LIBS+=-Lxxx-lyyy
方法如果没有问题,也会导致混淆
我们使用Qt为Linux、Mac和Windows开发应用程序。我们提供完整的独立应用程序。因此,所有非系统库都应该包含在部署包中。我们希望我们的客户能够在所有操作系统的同一个U盘上运行应用程序。出于平台兼容性的原因,U盘必须格式化为FAT32,FAT32不支持(Linux)符号链接
我们发现LIBS+=-Lxxx-lyyy
这个成语太像一个黑匣子了:
linux64 {
LIBSSL= $$OPENSSLPATH/linux64/lib/libssl.a
!exists($$LIBSSL): error ("Not existing $$LIBSSL")
LIBS+= $$LIBSSL
LIBCRYPTO= $$OPENSSLPATH/linux64/lib/libcrypto.a
!exists($$LIBCRYPTO): error ("Not existing $$LIBCRYPTO")
LIBS+= $$LIBCRYPTO
}
所有依赖项都可以复制到部署包中,因为我们知道它们的文件路径。为了完整起见,我想添加一个库路径,您也可以只添加该库路径,它将在其中查找依赖库(在代码中可能没有直接引用,但您使用的库可能需要它) 作为比较,这与LIBPATH环境的功能相对应,但它在Qt Creator中有点模糊,并且没有很好的文档记录 我处理这件事的方式如下:
LIBS += -L"$$_PRO_FILE_PWD_/Path_to_Psapi_lib/"
基本上,如果您不提供实际的库名称,它将添加搜索依赖库的路径。语法上的差异很小,但这对于提供查找依赖库的路径非常有用。有时候,提供每个路径只是一种痛苦,因为您知道每个库都在某个文件夹中,Qt创建者会把它们取出来。in.pro:
LIBS+=Ole32.lib OleAut32.lib Psapi.lib advapi32.lib
#pragma comment(lib,"psapi.lib")
在.h/.cpp:#pragma注释(lib,“user32.lib”)
很抱歉提出了一个蹩脚的问题,但psapi库应该已经预构建,还是QtCreator将负责构建它?是否可以将环境变量指定为库路径?我这样问是因为如果一个项目是由多个人开发的,而这些人可能没有将所有库安装在同一个位置,那么将硬编码路径名写入.pro文件将破坏项目。这对我来说确实有效,但当我使用
qmake-tp vc
生成vs项目时,我在项目的附加依赖项中没有找到libs名称,但是vs项目运行良好。这是否意味着有其他方法可以在vs中添加其他依赖项
?我认为不需要为内置Windows库指定路径。我们的.pro文件在win32部分有如下行:LIBS+=-lGdi32
。正如@DanKorn所指出的,对于内置Windows库,您不需要(也不应该)指定路径。为什么他们不能只制作一个GUI来添加库smh。最新版本的Qt(Creator)总是希望(单)正斜杠作为目录分隔符。唯一的例外是