在Qt

时间:2018-07-21 03:23:06

标签: c++ qt qt-creator

在Windows上,我尝试通过Qt Creator将外部DLL添加到我的Qt项目中。我尝试引用以下生成的工件:

  • target / debug / mylib.d
  • target / debug / mylib.dll
  • target / debug / mylib.dll.d
  • target / debug / mylib.dll.lib

添加库/ dll会在我的.pro文件中生成以下条目:

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/target/release/ -lmylib.dll
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/target/debug/ -lmylib.dll

INCLUDEPATH += $$PWD/target/debug
DEPENDPATH += $$PWD/target/debug

Qt希望“ mylib.dll.lib”被命名为“ mylib.lib”,因此使用上述配置,构建将失败,并显示以下错误:

error: LNK1104: cannot open file 'mylib.lib'

如果我将“ mylib.dll.lib”重命名为“ mylib.lib”,则构建可以正常工作,但是,如果可能的话,我不想引入这一额外步骤。 dll.lib后缀由Rust / Cargo和there aren't any plans to allow this to be configured生成。

做完一些研究之后,我尝试了几种不同的选择,包括在PRE_TARGETDEPS中引用它,但是我无法使LNK1104错误消失。我想念什么?

1 个答案:

答案 0 :(得分:0)

我知道了。诀窍是直接引用文件(即不使用-L / -l参数),如下所示:

win32:CONFIG(release, debug|release): LIBS += $$PWD/target/release/mylib.dll.lib
else:win32:CONFIG(debug, debug|release): LIBS += $$PWD/target/debug/mylib.dll.lib

win32:CONFIG(release, debug|release): LIBS += $$PWD/target/release/mylib.dll
else:win32:CONFIG(debug, debug|release): LIBS += $$PWD/target/debug/mylib.dll