代码之家  ›  专栏  ›  技术社区  ›  Björn Pollex

使用winsock.h的库有问题

  •  3
  • Björn Pollex  · 技术社区  · 15 年前

    我有一个项目使用boost.asio和IntelIPP库附带的媒体解码示例。问题如下。如果我在没有定义的情况下编译项目 WIN32_LEAN_AND_MEAN 阿西奥抱怨臭名昭著的“winsock.h已经包含”错误。如果我定义宏,另一个库中的头有未定义的类型,因为它依赖于windows.h,包括winsock.h。我尝试手动将winsock.h添加到头中,但这会使boost.asio再次呼喊。我能想到的唯一解决方案是检查每个编译单元,确保总是首先包含ASIO。由于项目的规模和复杂性(以及解决方案的丑陋性),我希望找到一种更好的方法。

    事先谢谢!

    2 回复  |  直到 12 年前
        1
  •  4
  •   stijn    15 年前

    如果您拆分源代码并确保在应用程序中不使用某种既包含ASIO又包含IPP的公共头文件,则可以绕过此问题。因此,需要asio的源文件包括boost头文件,需要ipp的源文件包括ipp头文件,但是需要引用这两个头文件的类的头文件不应该包括任何外部头文件,如果需要,可以使用forward声明。

        2
  •  0
  •   ravenspoint    15 年前

    “其他库中的头具有未定义的类型”

    有多少?有多复杂?也许你可以定义这些类型?