如何将boost线程库添加到iPhone项目?

时间:2011-01-25 09:07:57

标签: iphone xcode boost boost-thread

我正在尝试将现有项目移植到需要Boost.Thread库的iPhone,项目编译时没有错误,但是存在链接错误:

"boost::thread::start_thread()", referenced from:
  boost::thread::thread<(anonymous namespace)::ReadThread::Function>((anonymous namespace)::ReadThread::Function, boost::disable_if<boost::is_convertible<(anonymous namespace)::ReadThread::Function&, boost::detail::thread_move_t<(anonymous namespace)::ReadThread::Function> >, boost::thread::dummy*>::type)in ChessEngine.o

如何将所需的线程库添加到Xcode项目?

P.S。 boost lib位于:/usr/local/lib/libboost_thread-mt.a

编辑(已找到库,但出现架构错误):

Linking to Boost.Signals using Xcode之后,在/usr/local/lib中添加Library Search Path并在-lboost_thread-mt中添加Other Linker Flags后,找到了该库。但是,有新的错误和警告:

ld: warning: in /usr/local/lib/libboost_thread-mt.dylib, file was built for unsupported file format which is not the architecture being linked (i386)

如何让lib适用于iOS(4.0或更高版本)?谢谢!

2 个答案:

答案 0 :(得分:1)

我做了一些搜索,发现this downloadable script将构建一个多架构的iphone就绪版本的boost。另请查看有关使用它的this blog post

答案 1 :(得分:0)

当您将当前目标设置为设备(i386 - 模拟器)时,听起来您正试图在库中链接架构(armv6,7)。如果这是正确的我会说你已经下载了为设备构建的库。要在模拟器中运行,您需要为您的计算机构建的库版本(I386)。

处理任何外部库的最简单方法是让开发人员生成armv6 / armv7 / i386静态框架。然后,这是一块蛋糕。如果这听起来很麻烦,我会在别处寻找功能: - )