使用boost和mingw链接c ++代码的问题

时间:2010-11-10 12:30:52

标签: c++ boost mingw

我正在尝试移植/构建我为gcc(在linux上)编写的一些代码作为Windows上的dll。首先我尝试在VC ++下构建但是有很多错误/警告(主要是在VC自己的包含文件中,这对我来说没有多大意义:))所以我安装了MinGW发行版(包括Boost库)。编译进行得相当顺利,但链接失败,未定义引用来自boost库的函数。 “-t”参数显示链接器实际上并不出于某种原因使用boost库(是的,-L路径是正确的,库在那里,链接器在我使用-l时不会抱怨)。

经过大量的谷歌搜索后,我发现顺序是问题,我必须在所有的.o文件之后放置我的-l参数(因为依赖)。除了对线程库的一个未定义的引用之外,这似乎解决了所有问题。再次-t表明链接器(不在列表中)实际上没有使用这个库(其他人也使用了boost_system和boost_date_time)。我再次使用参数的顺序,但结果是一样的。知道我错过了什么吗?

错误是:

c:/x5/cpp/build//timed_cond.o:timed_cond.cpp:(.text$_ZN5boost6detail24basic_condition_variable7do_waitINS_11unique_lockINS_5mutexEEEEEbRT_NS0_7timeoutE[bool boost::detail::basic_condition_variable::do_wait<boost::unique_lock<boost::mutex> > (boost::unique_lock<boost::mutex>&, boost::detail::timeout)]+0x246): undefined reference to `_imp___ZN5boost11this_thread18interruptible_waitEPvNS_6detail7timeoutE'

我在两个平台上使用相同版本的Boost库(1.44.0)

1 个答案:

答案 0 :(得分:1)

好的,我找到了答案。看起来问题是在MinGW-distro中boost库是静态的。通常它们被配置为动态链接并导致上述问题。 This回答解释了......