LNK1104 将 Boost 库添加到 Qt 项目时出错

Posted

技术标签:

【中文标题】LNK1104 将 Boost 库添加到 Qt 项目时出错【英文标题】:LNK1104 Error when adding Boost library to Qt project 【发布时间】:2016-05-23 13:23:47 【问题描述】:

M'kay 所以我是Qt 的新手,我正在尝试将boost/filesystem 库包含到我的项目中。但是,当我尝试构建它时,我总是会收到此错误:

LNK1104:文件“libboost_filesystem-vc140-mt-1_61.lib”不能 打开了。

现在,我知道这个库需要事先构建,所以,正如我制作的 Boost-Website 所述:

bootstrap
.\b2

它构建得很好。我还使用 Qt 对话框将库添加到我的项目中,我的 .pro 文件如下所示:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = ProjectName
TEMPLATE = app

SOURCES += main.cpp\
        mainwindow.cpp \
    someclass.cpp \
    someclass2.cpp

HEADERS  += mainwindow.h \
    someclass.h \
    someclass2.h

FORMS    += mainwindow.ui

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libarys -llibboost_filesystem-vc140-mt-1_61
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libarys -llibboost_filesystem-vc140-mt-1_61
else:unix: LIBS += -L$$PWD/libarys -llibboost_filesystem-vc140-mt-1_61

INCLUDEPATH += $$PWD/boost
DEPENDPATH += $$PWD/boost

显然,我做错了什么,但我不知道到底是什么。互联网知道问题所在,但似乎没有“简单”的解决方案。

【问题讨论】:

如果libboost_filesystem-vc140-mt-1_61.lib 存在于项目的库子文件夹中,请确保您没有混合使用 32 位和 64 位。 原来,它不喜欢运行时链接。该文件在那里,并且位版本也可以。不过感谢您的宝贵时间。 【参考方案1】:

原来,我的项目不喜欢 lib-version。

我重建了我的 lib 文件:

>b2 --build-dir="destination/directory" toolset=msvc --build-type=complete link=static threading=multi --with-filesystem stage

然后,我使用了

中的库
release/link-static/runtime-link-static/threading-multi/  

这是:

libboost_filesystem-vc140-mt-s-1_61

然后为 .pro 文件重新运行 qmake。然后构建并执行应用程序,错误就消失了。

【讨论】:

以上是关于LNK1104 将 Boost 库添加到 Qt 项目时出错的主要内容,如果未能解决你的问题,请参考以下文章

CUDA、Win7、Qt Creator - LNK1104:无法打开文件“<cuda 文件>.obj”

Qt Creator 链接器错误:LNK1104:无法打开文件“opencv_core249d.lib”

VC2010编译提示 LINK : fatal error LNK1104: 无法打开文件“libboost_system-vc100-mt-gd-1_51.lib”

Qt Creator 链接器错误:LNK1104:无法打开 fil 'usb-1.0.lib' - Windows

fatal error LNK1104: cannot open file "kernel32.lib"

Qt 模块错误 - QtOpenGL 中的 LNK 1112