C++ 链接c++;使用boost和mingw编写代码

C++ 链接c++;使用boost和mingw编写代码,c++,boost,mingw,C++,Boost,Mingw,我正在尝试将为gcc(linux上)编写的一些代码移植/构建为windows上的dll。首先,我尝试在VC++下构建,但有太多错误/警告(主要在VC自己的包含文件中,这对我来说没有太大意义:),所以我安装了MinGW发行版(包括Boost库)。编译进行得相当顺利,但是链接失败,因为未定义对boost库中函数的引用。“-t”参数表明链接器出于某种原因没有实际使用boost库(是的,-L路径是正确的,库在那里,当我使用-L时链接器没有抱怨) 在谷歌搜索了很多次之后,我发现顺序是个问题,我必须在所有的

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

在谷歌搜索了很多次之后,我发现顺序是个问题,我必须在所有的.o文件之后放置我的-l参数(因为依赖关系)。这似乎解决了所有的问题,除了对线程库的一个未定义的引用。再次-t表明这个库实际上并没有被链接器使用(不在列表中),其他库(我也使用boost_系统和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'
c:/x5/cpp/build//timed\u cond.o:timed\u cond.cpp:(.text$ZN5boost6detail24basic\u condition\u variable7do\u waitINS\u 11unique\u lockINS\u 5mutexeeebrt\u NS0\u 7timeoutE[bool boost::detail::basic\u condition\u variable::do\u wait(boost::unique\u lock&,boost::detail::timeout)]+0x246):未定义对“\u imp\u zn5boost11此线程18可中断\u waitEPvNS\u 6detail7timeoutE”的引用

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

好的,我找到了答案。问题似乎出在MinGW发行版中的boost库是静态的。通常,它们被配置为动态链接,这导致了上述问题。答案解释了