在使用QtCreator运行时指定外部库PATH

我在Windows的Qt项目中包含一个外部库。 构建过程可以完美运行,但是当我尝试运行代码时,它会失败。

我知道失败的原因是链接库DLL路径未包含在PATH环境变量中,也未包含在可执行路径中。

一种解决方案可以是将DLL路径添加到PATH环境变量中,或者将DLL复制到执行路径中,但是我想避免这些并找到一种自动化的解决方案。

我知道可以在.pro文件中添加一个INSTALL命令,因此,如果我将构建命令make install添加到构建序列中,则指定的依赖项将被复制到执行路径中。有人可以给我一个例子吗?我用于包含库的代码如下:

message(Importing SAT-Sdk)
win32:CONFIG(release,debug|release): LIBS += -L$$PWD/../../../SDK/dist/SAT-Sdk/lib/ -lsat_sdk
else:win32:CONFIG(debug,debug|release): LIBS += -L$$PWD/../../../SDK/dist/SAT-Sdk/lib/ -lsat_sdkd
else:unix: LIBS += -L$$PWD/../../../SDK/dist/SAT-Sdk/lib/ -lsat_sdk

INCLUDEPATH += $$PWD/../../../SDK/dist/SAT-Sdk/include
DEPENDPATH += $$PWD/../../../SDK/dist/SAT-Sdk/include

另一种解决方案可以是指定DLL的路径,将DLL添加命令到预配置的运行设置中,但是我不知道确切的语法。谁能给我一个例子吗?

感谢您的帮助

wangkai5260929 回答:在使用QtCreator运行时指定外部库PATH

您可以在项目的Build Environment或Run Environment中设置PATH环境变量。例如,请参见this project

,

您可以按照https://doc.qt.io/qt-5/qmake-advanced-usage.html#installing-files中所述将文件添加到install目标。您可能只需添加以下内容:

target.files += $$PWD/../../../SDK/dist/SAT-Sdk/lib/sat_sdk.dll

尽管lib文件名可能取决于目标平台和Windows上的调试/发行版(带有后缀“ d”的后缀)。我个人将所有这些设置在某个中央位置,因此不需要重复所有这些路径。下面的示例(未经测试的YMMV,有很多方法可以执行此操作,等等:)

SAT_SDK_PATH = $$PWD/../../../SDK/dist/SAT-Sdk
SAT_SDK_LIB_PATH = $$SAT_SDK_PATH/lib
SAT_SDK_LIB = sat_sdk
win32:CONFIG(debug,debug|release):SAT_SDK_LIB = $${SAT_SDK_LIB}d

win32:SAT_SDK_LIB_BIN = $${SAT_SDK_LIB}.dll
else:SAT_SDK_LIB_BIN = lib$${SAT_SDK_LIB}.$${QMAKE_EXTENSION_SHLIB}

LIBS += -L$$SAT_SDK_LIB_PATH -l$$SAT_SDK_LIB
INCLUDEPATH += $SAT_SDK_PATH/include
DEPENDPATH += $SAT_SDK_PATH/include

target.files += $$SAT_SDK_LIB_PATH/$$SAT_SDK_LIB_BIN
target.path = #install path ...

!isEmpty(target.path): INSTALLS += target
本文链接:https://www.f2er.com/3059099.html

大家都在问