Boost.Testの利用で変な風にはまる
Boost.Testを使い始めようと試していたら、次のエラーが出て、詰まっていました。
LINK : fatal error LNK1561: エントリー ポイントを定義しなければなりません。
ソースは次のとおりの簡単なもの。
#define BOOST_TEST_MODULE unit_test #include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_SUITE(suite); BOOST_AUTO_TEST_CASE(test) { BOOST_CHECK_EQUAL(2 + 2, 5); } BOOST_AUTO_TEST_SUITE_END();
そのまんま、main関数が無いよってことなんですが、不要なはずだし、念のため定義してやると今度はテストが実行されない。
同じコードでMacは問題なし。staticだdynamicだって違いがあるので、一応dllを作ってみたらそちらは問題なし。ただ、MacではNGって話はあっても、Windowsではってのは無かったので、納得いかなかったのですが、別件でVisual Studioの設定を変えたら、突然動作するようになったり。
で、改めて見比べたら、次のリンカー(のサブシステム)の設定が空に原因だったことが判明(下は修正したもの)。
ただ、これ、そもそもVisual Studioの既定のテンプレートからコンソールアプリを作った場合は問題ない設定になっています。空になっていたのは、私が自前で用意したカスタムウィザードから作った影響でして。
カスタムウィザードはデフォルトでほとんど設定が入らないので、明示的に指定する必要があるんだけど、種々の理由からすべてを設定するのは結構難しい。それで、必要最低限(と思われる)設定で取り回していたのだけれど、今回はそれが仇となりました。