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 に答える