我在QtCreator中添加外部库文件时遇到了一个简单但非常烦人的问题。我在.pro
文件通过以下线路将它们添加:问题与Qt Creator LIBS路径?
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不更新我试图做的更改。有什么建议吗?谢谢。
与解决的答案编辑:
我改变了代码在.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
,其他rwise你会得到链接问题。
而且我还发现,通过这种link答案LIB
问题在那里的报价:
“正常
debug:LIBS += ...
else:LIBS += ...
解决方案休息时,用户简单地使用CONFIG += debug
或CONFIG += release
调试与释放之间切换建立(他们这样做;没有人记得在CONFIG += debug
之前说CONFIG -= release
release_and_debug :)。
这是规范的方式到范围上调试:
CONFIG(debug, debug|release) {
# debug
} else {
# release
}
“
不管怎么说,非常感谢。
也许尝试将LIBS行更改为LIBS + = $$ quote(D:/dcmtk-3.6.0/Lib\files/Release/)\ – Shf
如果您实际上将引号字符放在他们周围,是否可以工作? – cmannett85
我用我找到的解决方案更新了我的问题:)。 –