1

ここで詳しく説明するように、スタンドアロンライブラリを構築してBoost UnitTestFrameworkを使用しようとしています。

http://www.boost.org/doc/libs/1_35_0/libs/test/doc/components/utf/compilation.html

そこで、前述のファイルを含むVCライブラリプロジェクトを作成してビルドしましたが、成功しました。次に、テストプロジェクトを作成し、作成したライブラリプロジェクトを参照しましたが、ビルドしようとすると、次のリンクエラーが発生しました。

1>Type.obj : error LNK2019: unresolved external symbol "bool __cdecl boost::test_tools::tt_detail::check_impl(class boost::test_tools::predicate_result const &,class boost::unit_test::lazy_ostream const &,class boost::unit_test::basic_cstring<char const >,unsigned __int64,enum boost::test_tools::tt_detail::tool_level,enum boost::test_tools::tt_detail::check_type,unsigned __int64,...)" (?check_impl@tt_detail@test_tools@boost@@YA_NAEBVpredicate_result@23@AEBVlazy_ostream@unit_test@3@V?$basic_cstring@$$CBD@63@_KW4tool_level@123@W4check_type@123@3ZZ) referenced in function "public: void __cdecl test1::test_method(void)" (?test_method@test1@@QEAAXXZ)
1>BoostUnitTestFramework.lib(framework.obj) : error LNK2019: unresolved external symbol "void __cdecl boost::debug::break_memory_alloc(long)" (?break_memory_alloc@debug@boost@@YAXJ@Z) referenced in function "void __cdecl boost::unit_test::framework::init(class boost::unit_test::test_suite * (__cdecl*)(int,char * * const),int,char * * const)" (?init@framework@unit_test@boost@@YAXP6APEAVtest_suite@23@HQEAPEAD@ZH0@Z)
1>BoostUnitTestFramework.lib(framework.obj) : error LNK2019: unresolved external symbol "void __cdecl boost::debug::detect_memory_leaks(bool)" (?detect_memory_leaks@debug@boost@@YAX_N@Z) referenced in function "void __cdecl boost::unit_test::framework::init(class boost::unit_test::test_suite * (__cdecl*)(int,char * * const),int,char * * const)" (?init@framework@unit_test@boost@@YAXP6APEAVtest_suite@23@HQEAPEAD@ZH0@Z)
1>BoostUnitTestFramework.lib(execution_monitor.obj) : error LNK2019: unresolved external symbol "bool __cdecl boost::debug::attach_debugger(bool)" (?attach_debugger@debug@boost@@YA_N_N@Z) referenced in function "public: int __cdecl boost::detail::system_signal_exception::operator()(unsigned int,struct _EXCEPTION_POINTERS *)" (??Rsystem_signal_exception@detail@boost@@QEAAHIPEAU_EXCEPTION_POINTERS@@@Z)
1>BoostUnitTestFramework.lib(execution_monitor.obj) : error LNK2019: unresolved external symbol "bool __cdecl boost::debug::under_debugger(void)" (?under_debugger@debug@boost@@YA_NXZ) referenced in function "public: int __cdecl boost::execution_monitor::execute(class boost::unit_test::callback0<int> const &)" (?execute@execution_monitor@boost@@QEAAHAEBV?$callback0@H@unit_test@2@@Z)
1>BoostUnitTestFramework.lib(unit_test_main.obj) : error LNK2019: unresolved external symbol "class boost::unit_test::test_suite * __cdecl init_unit_test_suite(int,char * * const)" (?init_unit_test_suite@@YAPEAVtest_suite@unit_test@boost@@HQEAPEAD@Z) referenced in function main
1>C:\Users\Rafid\Workspace\MyPhysics\Builds\VC10\Tests\Debug\Tests.exe : fatal error LNK1120: 6 unresolved externals

これらは主にBoostデバッグライブラリが原因のようですが、Boostデバッグライブラリはライブラリとしてリンクするのではなく、ヘッダーファイルとしてインクルードするだけでよいことを念頭に置いて、リンクエラーが発生する理由がわかりません。

何か案は?!

4

2 に答える 2

2

OK、私は問題が何であるかを理解しました。どうやら、Boostのウェブサイトで言及されているファイルのリストには、次のファイルがありません。

debug.cpp
test_main.cpp
test_tools.cpp

これらのファイルをプロジェクトに追加すると、テストプロジェクトがコンパイルされ、正常に実行されます。

更新:私が実際にBoost 1.51に対してビルドしたことを述べたかったので、ドキュメントが少し古い可能性があります。ページで、ファイルがBoost1.35にリンクされていることがわかります。

于 2012-09-04T21:36:23.240 に答える
0

Windows でブート 1.57 の単体テストをコンパイルするには、 @Rafid の回答
を使用します 。私にとっては、このファイルをプロジェクトに追加することでした。

test_tools.cpp
unit_test_main.cpp
framework.cpp

その場所にBOOST_DIR/libs/test/src

于 2015-11-25T22:12:08.090 に答える