我有一个使用英特尔IPP库附带的Boost.Asio和Media-Decoding-Samples的项目。问题如下。如果我在没有定义WIN32_LEAN_AND_MEAN
的情况下编译项目,Asio会抱怨臭名昭着的“winsock.h已经包含”错误。如果我定义宏,另一个库中的头文件有未定义的类型,因为它依赖于包括winsock.h在内的windows.h。我尝试手动将winsock.h添加到该标头,但这使得Boost.Asio再次呼出。我能想到的唯一解决方案是遍历每个编译单元并确保始终包含Asio。由于项目的规模和复杂性(以及该解决方案的丑陋),我想找到一个更好的方法。
提前致谢!
答案 0 :(得分:4)
如果您拆分了源代码并且确保在您的应用程序中不使用某种常见标题,那么您可以解决这个问题,同时包含Asio和IPP。因此需要Asio的源文件包含Boost头文件,需要IPP的源文件包括IPP头文件,但是需要引用两者的类的头文件不应包含任何外部头文件,并且如果需要,请使用前向声明。
答案 1 :(得分:0)
“其他库中的标题具有未定义的类型”
多少?有多复杂?也许您可以定义这些类型?