2010-11-10 55 views
0

我试图端口/构建我的代码作为一个dll在Windows上编写的gcc(在Linux上)。首先,我尝试在VC++中构建,但是有太多的错误/警告(主要是在VC自己的包含文件中,这对我来说并没有多大意义),所以我安装了MinGW发行版(其中包括Boost库)。编译进行得非常顺利,但链接失败,未定义的引用boost库的函数。 “-t”参数表明链接器实际上并没有使用boost库(是的,-L路径是正确的,库在那里,当我使用-l时,链接器没有抱怨)。问题链接C++代码使用提升与mingw

经过大量的搜索,我发现顺序是问题,我必须将我的-l参数放在所有.o文件之后(因为依赖关系)。这似乎解决了所有问题,除了一个未定义的线程库引用。再次表明,这个库实际上没有被链接器使用(不在列表中),其他库都是(我也使用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' 

我这两个平台

回答

1

好上使用Boost库(1.44.0)的版本相同,我找到了答案。看起来问题在于MinGW-distro中的boost库是静态的。通常他们被配置为动态链接,并导致上述问题。 This答案解释它...