【问题标题】:Linker error from Boost: cannot find the libraries to link with来自 Boost 的链接器错误:找不到要链接的库
【发布时间】:2013-10-22 11:18:38
【问题描述】:

我有这个与 Boost 相关的链接器错误:

error: cannot find -lboost_program_options-mgw44-mt-1_54
error: collect2: ld returned 1 exit status

这是Qt pro文件中与Boost相关的部分:

BOOST_VERS = 1_54
COMPILER = mgw44

INCLUDEPATH += $$BOOST_ROOT/boost
QMAKE_LIBDIR += $$BOOST_ROOT/stage/lib

LIBS += -lboost_program_options-$$COMPILER-mt-$$BOOST_VERS
LIBS += -lboost_thread-$$COMPILER-mt-$$BOOST_VERS
LIBS += -lboost_system-$$COMPILER-mt-$$BOOST_VERS

BOOST_ROOT 是设置为 C:\Boost_1_54_0 的环境变量。

由于 Boost 似乎安装正确(库在那里),我做错了什么?

系统:
- 视窗 7
- MinGW 4.4
- 提升 1.54.0
- qmake / Qt 创建者

【问题讨论】:

  • 它要查找的库文件真的存在吗?
  • 你忘了问问题。
  • C:\Boost_1_54_0\stage\lib 具体有没有 boost_program_options-mgw44-mt-1_54(.dll, or .lib or... no extension?) 文件?
  • 在文件实际存在的情况下尝试执行LIBS += -L$$BOOST_ROOT/stage/lib
  • @benjymous - 是的,它存在。

标签: c++ qt boost linker mingw


【解决方案1】:

QMAKE_LIBDIR

此变量包含所有已知库目录的位置。 此变量的值通常由 qmake 或 qmake.conf 处理 并且很少需要修改。

请尝试这样做:

win32-g++* {
  LIBS           += $${BOOST_ROOT}/stage/lib/libboost_system-$${COMPILER}-mt-$${BOOST_VERS}.a
  PRE_TARGETDEPS += $${BOOST_ROOT}/stage/lib/libboost_system-$${COMPILER}-mt-$${BOOST_VERS}.a
}

linux-g++* {
  LIBS           += -L$${BOOST_ROOT}/stage/lib  -lboost_system-$${COMPILER}-mt-$${BOOST_VERS}
  PRE_TARGETDEPS +=   $${BOOST_ROOT}/stage/lib/libboost_system-$${COMPILER}-mt-$${BOOST_VERS}.a
}

【讨论】:

    【解决方案2】:

    作为 BOOST_ROOT 环境变量,必须这样使用:

    $$(BOOST_ROOT)
    

    并且 BOOST_VERS 必须用作:

    $${BOOST_VERS}
    

    【讨论】:

      猜你喜欢
      • 2018-08-12
      • 2015-02-13
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多