代码块、MinGW、Boost 和静态链接问题

Posted

技术标签:

【中文标题】代码块、MinGW、Boost 和静态链接问题【英文标题】:Code Blocks, MinGW, Boost, and static linking issues 【发布时间】:2010-09-14 01:26:17 【问题描述】:

我正在使用带有 MinGW 的代码块,并正在尝试使用静态链接编译一个简单的程序。我已经使用these directions 构建了 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;


【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于代码块、MinGW、Boost 和静态链接问题的主要内容,如果未能解决你的问题,请参考以下文章

与 MinGW 的静态和动态/共享链接

OpenBLAS + MinGW64 静态链接?

使用转换器提升 Python 问题 - 静态链接

链接Boost静态库

如何在mingw中进行libwinpthread-1.dll的静态链接?

boost静态链接的问题 -lgcc_s