Qt Creator LIBS路径的问题
Issue with Qt Creator LIBS path?
我在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 += debug
或CONFIG += 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/"
你上面的问题几乎可以肯定是因为缺少引号(空格被解释为参数断行,你需要它是一个参数)。
相关文章:
- CMake 错误"源似乎不包含 CMakeLists.txt",路径/库连接问题
- 有效地将大数存储为 2 的幂用于路径问题
- 使用 Libssh 将文件从服务器复制到客户端:分配文件复制目标路径时出现问题
- 我最近更改了编译器路径以运行 c++ 代码,但现在我无法运行任何 python 代码。我该如何解决这个问题?
- 按名称问题获取卸载应用程序路径
- 从另一个应用启动我的应用时出现相对路径更改问题
- 问题在具有依赖性时从其他路径上加载DLL的DLL
- 程序文件中的安装路径:一些问题
- 在 c++ 中找不到头文件,可能的路径问题
- Visual Studio:C++\CLI 包装程序集路径依赖性问题
- 班级路径问题 - getJnienv失败了
- 最短路径问题与一个变化
- 我的递归算法中的问题,用于查找所有最短、唯一的路径
- 编译C++中动态链接库,存在运行路径问题
- 问题:如何在任何Windows机器上使用路径创建文件
- qt5设计器,使用fileopen,在lineedit中显示文件路径,这样做是否有问题
- IOS上的OpenCV haar级联了C++中的xml文件路径问题
- A* 路径查找中 std::map 性能的视觉C++性能问题
- 实现用于查找路径的递归函数时出现问题
- C++创建进程 - 系统错误#2找不到文件 - 我的文件路径有什么问题?