次の問題があります。次のようないくつかのクラスを使用して、C ライブラリを初期化します。
class Hello
{
public:
Hello()
{
cout << "Hello world" << endl;
}
~Hello()
{
cout << "Goodbye cruel world" << endl;
}
} hello_inst;
このコードを hello.cc ファイルに含めて、main() を含む別のファイルと一緒にコンパイルすると、main() の呼び出しの前に hello_inst が作成され、呼び出しの後に破棄されます。この場合、いくつかの行を出力するだけです。私のプロジェクトでは、LIBXML_TEST_VERSION を介して libxml を初期化します。
cmake プロジェクトで多くの同じコードを共有する複数の実行可能ファイルを作成しています。このスレッドによると: CMake で複数の実行可能ファイルを追加する上記のコードを含む静的ライブラリを作成し、そのライブラリに対して実行可能ファイルをリンクしました。残念ながら、その場合、hello_inst は作成されません (また、libxml2 は初期化されません)。この問題を解決するにはどうすればよいですか?