Qt Creator LIBS路径的问题

Issue with Qt Creator LIBS path?

本文关键字:问题 路径 LIBS Creator Qt      更新时间:2023-10-16

我在QtCreator中添加外部库文件时遇到了一个简单但非常恼人的问题。我通过.pro文件中的以下行添加它们:

INCLUDEPATH += $$quote(D:/dcmtk-3.6.0/Prefix Files/include)
LIBS += $$quote(-LD:/dcmtk-3.6.0/Lib files/Release/) 
-ladvapi32 
-ldcmdata
-loflog
-lofstd
-lws2_32
-lnetapi32
-lwsock32
LIBS += $$quote(-LD:/dcmtk-3.6.0/Lib files/Debug/) 
-ladvapi32 
-ldcmdata
-loflog
-lofstd
-lws2_32
-lnetapi32
-lwsock32

但是每次它给出的错误是:-1: error: LNK1181: cannot open input file 'files/Release).obj'

我知道问题正在发生,因为那里的空格,尽管试图遵循文档,它似乎不工作。我还认为可能是QtCreator没有更新我试图做出的更改。有什么建议吗?谢谢。

EDIT WITH SOLVED ANSWER:

我将.pro文件中的代码更改为:

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TEMPLATE = app
TARGET = NewApp

##QMAKE_CXXFLAGS_DEBUG += /MTd
SOURCES += main.cpp
        mainwindow.cpp
HEADERS  += mainwindow.h
FORMS    += mainwindow.ui
DEFINES += _REENTRANT

QMAKE_CFLAGS_RELEASE -= -MD
QMAKE_CFLAGS_RELEASE = -MT
QMAKE_CFLAGS_DEBUG -= -MDd
QMAKE_CFLAGS_DEBUG = -MTd
QMAKE_CXXFLAGS_RELEASE -= -MD
QMAKE_CXXFLAGS_RELEASE += -MT
QMAKE_CXXFLAGS_DEBUG -= -MDd
QMAKE_CXXFLAGS_DEBUG += -MTd
QMAKE_LFLAGS_DEBUG += /NODEFAULTLIB:msvcrtd.lib
QMAKE_LFLAGS_RELEASE += /NODEFAULTLIB:msvcrt.lib
INCLUDEPATH += $$quote(D:/dcmtk-3.6.0/Prefix Files/include/)

CONFIG( debug, debug|release ) {
LIBS += $$quote(-LD:/dcmtk-3.6.0/LibFiles/Debug/) 
-ladvapi32
-ldcmdata
-loflog
-lofstd
-lws2_32
-lnetapi32
-lwsock32
}

else {
LIBS += $$quote(-LD:/dcmtk-3.6.0/LibFiles/Release/) 
-ladvapi32
-ldcmdata
-loflog
-lofstd
-lws2_32
-lnetapi32
-lwsock32
}

这里我必须添加以下行:

QMAKE_LFLAGS_DEBUG += /NODEFAULTLIB:msvcrtd.lib
QMAKE_LFLAGS_RELEASE += /NODEFAULTLIB:msvcrt.lib

因为,如果你打开MT,你必须使用/NODEFAULTLIB开关来忽略这些库:libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib,否则你会得到链接问题。

我也找到了LIB问题的答案,通过这个链接引用:

正常

"

debug:LIBS += ...
else:LIBS += ...
当用户天真地使用CONFIG += debugCONFIG += release在调试和发布版本之间切换时,

解决方案就会失效。没有人记得在CONFIG += debug之前说CONFIG -= release release_and_debug:)。

这是调试时作用域的规范方式:

CONFIG( debug, debug|release ) {
    # debug
} else {
    # release
}

"

无论如何,非常感谢。

在.pro文件中指定库链接位置的正确方法实际上是通过QMAKE_LIBDIR变量:

QMAKE_LIBDIR += "D:/dcmtk-3.6.0/Lib files/Release/"

你上面的问题几乎可以肯定是因为缺少引号(空格被解释为参数断行,你需要它是一个参数)。