2010-09-14 66 views
11

我正在使用MinGW代码块,并试图获得一个简单的程序来编译静态链接。我使用these directions构建了Boost库。一切都很顺利,我能够成功地编译这个简单的程序(它编译,我知道它不工作,因为它在消息发送到控制台之前退出,但我只是希望它编译)。代码块,MinGW,Boost和静态链接问题

如果我在我的链接库中有一个DLL,它编译得很好,但是当我用相同内容的静态.a库进行切换时,我得到未定义的引用,例如“_imp ___ ZN5boost6threadD1Ev'|”的未定义引用。

我不知道问题是什么,找不到解决方案。我认为这可能与链接器设置有关,但我找不到有关如何更改它们的信息。我会非常感谢任何可以提供的帮助。

#include <iostream> 
#include <boost/thread.hpp> 

void myfunction() 
{ 
    std::cout << "this is a thread" << std::endl; 
    return; 
} 

int main() 
{ 
    boost::thread mythread(&myfunction); 
    return 0; 

} 

回答

10

它试图在为动态链接配置​​标题时尝试进行静态链接。我在this question中解释了这个libssh。拨打boost/thread/detail/config.hpp让我觉得你应该#define BOOST_THREAD_USE_LIB,或使用-D标志来做同样的事情。