在使用外部推进时产生火焰呼吸的问题



我正在尝试使用firebreath的boost 1.46.0。我已经阅读了firebreath wiki上的建筑与外部增强,但还没有能够弄清楚。

我将boost下载到~/boost_1_46_0并使用bjam编译它。我这样调用premake .sh:

prepmake.sh projectdir builddir -DCMAKE_BUILD_TYPE="Release" 
     -DVERBOSE=1 
     -DWITH_SYSTEM_BOOST=1 
     -DBOOST_ROOT="~/boost_1_46_0/" 
     -DBoost_USE_STATIC_LIBS=on 
     -DBoost_USE_STATIC_RUNTIME=off

Prepmake成功。然后我在firebreath构建目录中调用make,但在最后遇到链接错误。

Linking CXX shared library ../../bin/Test/npTest.so
../../ScriptingCore/libScriptingCore.a(URI.cpp.o): In function `global constructors keyed to URI.cpp':
URI.cpp:(.text+0x637): undefined reference to `boost::system::generic_category()'
URI.cpp:(.text+0x643): undefined reference to `boost::system::generic_category()'
URI.cpp:(.text+0x64f): undefined reference to `boost::system::system_category()'
URI.cpp:(.text+0x65b): undefined reference to `boost::system::system_category()'
../../ScriptingCore/libScriptingCore.a(URI.cpp.o): In function `FB::URI::isLocalhost() const':
URI.cpp:(.text+0x3065): undefined reference to `boost::system::system_category()'
URI.cpp:(.text+0x3095): undefined reference to `boost::system::system_category()'
URI.cpp:(.text+0x32ed): undefined reference to `boost::system::system_category()'
../../ScriptingCore/libScriptingCore.a(URI.cpp.o):URI.cpp:(.text+0x3569): more undefined references to `boost::system::system_category()' follow

谢谢达伦

看起来您错过了boost-system库

我必须在项目的PluginConfig.cmake中设置firebreath使用的boost库:

add_boost_library(date_time)
add_boost_library(regex)
add_boost_library(system)
add_boost_library(thread)

奇怪的是,firebreath似乎会自动找到它们(见下文),但除非我手动指定add_boost_library,否则链接器不会意识到它们:

-- Boost version: 1.46.0
-- Found the following Boost libraries:
--   thread
--   system
-- Boost version: 1.46.0
-- Found the following Boost libraries:
--   thread
--   system
--   date_time
-- Boost version: 1.46.0
-- Found the following Boost libraries:
--   thread
--   system
--   date_time
--   regex
-- Configuring done
-- Generating done

我有一个类似的问题(在VS2013上使用外部boost 1.56)链接失败,说它找不到boost date_time和regex的库。

使用

添加
add_boost_library(date_time)
add_boost_library(regex)

没有效果,但是这为我解决了这个问题:

link_boost_library(${PLUGIN_NAME} date_time)
link_boost_library(${PLUGIN_NAME} regex)

以备将来有人偶然发现这个问题时参考。

相关内容

  • 没有找到相关文章

最新更新