SDK中使用的zlib版本与用户计算机上可能存在的版本之间似乎存在冲突。例如...
在macOS 10.11.6和Xcode 8上,编译期间使用的zlib版本与运行时加载的libz.dylib
版本不匹配。具体来说,编译期间使用的头文件适用于zlib v1.2.8,而运行时加载的dylib文件适用于1.2.5。
这可能会导致运行时崩溃,因为它可以尝试调用1.2.5中不存在的函数。问题在于标头(来自SDK)认为我们正在使用1.2.8,因此它将基于为版本检查定义的任何#if
来编译特定于1.2.8的代码。
那么链接和使用zlib的最佳方法是什么?
我应该将其编译为静态lib并忽略操作系统提供的版本吗?我目前正在这样做,并在我的应用程序中使用1.2.8,但这可能会对10.14.3上的用户造成问题。我正在考虑切换到动态库,但是上面的情况也在其中起作用。