3

main.cpp次のプリコンパイル ヘッダーを含むプロジェクトがあります。

 <!-- language: lang-cpp -->
 #ifndef PRECOMPILE_H
 #define PRECOMPILE_H
 #include <iostream>
 #include <string>
 #include <vector>
 #include <boost\asio.hpp>
 #include <boost\bind.hpp>
 #include <boost\asio\ssl.hpp>
 #include <boost\locale.hpp>
 #include <boost\algorithm\string.hpp>
 #endif 

プロジェクトが の場合、*.lib常に正常にビルドされます。

プロジェクトが次の場合*.exe:
でビルドするとCreate (/Yc)、すべて問題ありません。
設定Use (/Yu) 時にリンカーエラーが発生 LNK2001します:

1) 未解決の外部シンボル "private: static class boost::asio::detail::tss_ptr::context> boost::asio::detail::call_stack::top_" (?top_@?$call_stack@Vstrand_impl@strand_service@ detail@asio@boost@@E@detail@asio@boost@@0V?$tss_ptr@Vcontext@?$call_stack@Vstrand_impl@strand_service@detail@asio@boost@@E@detail@asio@boost@@@234@ A)

2) 未解決の外部シンボル "public: static class boost::asio::detail::service_id boost::asio::detail::service_base::id" (?id@?$service_base@Vselect_reactor@detail@asio@boost@ @@detail@asio@boost@@2V?$service_id@Vselect_reactor@detail@asio@boost@@@234@A)

3) 未解決の外部シンボル "public: static class boost::asio::detail::service_id boost::asio::detail::service_base::id" (?id@?$service_base@Vstrand_service@detail@asio@boost@ @@detail@asio@boost@@2V?$service_id@Vstrand_service@detail@asio@boost@@@234@A)

4) 未解決の外部シンボル "public: static class boost::asio::detail::service_id > > boost::asio::detail::service_base > >::id" (?id@?$service_base@V?$deadline_timer_service @Vptime@posix_time@boost@@U?$time_traits@Vptime@posix_time@boost@@@asio@3@@asio@boost@@@detail@asio@boost@@2V?$service_id@V?$deadline_timer_service@Vptime @posix_time@boost@@U?$time_traits@Vptime@posix_time@boost@@@asio@3@@asio@boost@@@234@A)

ブースト: v1_49 静的 /MTd

4

1 に答える 1

3

プリコンパイル済みヘッダーが呼び出された場合は、でコンパイルされ、でコンパイルする他のすべてのファイルに(として)リンクされるファイルPCH.Hも必要です。PCH.CPP/YcPCH.OBJ/Yu

動作する他のケースの場合、これはおそらくstatic、Boostヘッダーからプリコンパイル済みヘッダーオブジェクトファイルからエクスポートされるものがないためです。

于 2012-05-22T10:50:33.120 に答える