0

boost::function を静的変数として保存しようとしています。関数から取得されます。

変数は次のようになります。

static boost::function<void( const wchar_t*, const bool)> s_logMessage;

コンパイルしようとすると、次のエラーが表示されます。

エラー LNK2001: 未解決の外部シンボル "public: static class boost::function Gorbatras_Converter::ConverterApp::s_logMessage" (?s_logMessage@ConverterApp@Gorbatras_Converter@@2V?$function@$$A6AXPB_W_N@Z@boost@@A)

変数を使用しない場合、そのエラーなしでコンパイルできることに気付きました (使用されていないため、コンパイラの最適化だと思います) が、s_logMessage 変数を使用しようとするとすぐにリンカー エラーが発生します。

s_logMessage を設定する私の方法は次のようになります。

const int ConverterApp::RunConverter( boost::function<void( const wchar_t* a_message, const bool a_newLine)> a_logMessage )
{
    ConverterApp::s_logMessage = a_logMessage;    
    ...
}

非静的メンバー変数として設定しようとしましたが、機能しているようです。しかし、私はそれを静的なものにする必要があります。

なぜ私がログ関数をパラメーターとして送っているのか不思議に思われるかもしれませんが、それは別のプログラムから来ているからです。

だから私が助けを必要としているのは、ブースト::関数関数を静的変数に保存するにはどうすればよいですか?

4

1 に答える 1