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) 未解析的外部符号“私有:静态类 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@一种)

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文件被编译/Yc并链接(as PCH.OBJ)到您编译的所有其他文件/Yu

对于其他可行的情况,这可能是因为staticBoost 标头中的任何内容都必须从预编译的标头对象文件中导出。

于 2012-05-22T10:50:33.120 回答