11

我正在使用带有 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;

}
4

1 回答 1

10

当标头配置为动态链接时,尝试静态链接。我在这个问题中为 libssh 解释了这一点。闲逛boost/thread/detail/config.hpp让我觉得你应该这样做#define BOOST_THREAD_USE_LIB,或者使用-D旗帜来做同样的事情。

于 2010-09-17T03:31:14.117 回答