gpt4 book ai didi

c++ - 多个开源库中的多个 zlib,链接器错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:55 26 4
gpt4 key购买 nike

我正在从事一个涉及 Lua、PhysFS 和 xml 解析器的 C++ 项目。它们每个都包含一个 zlib。在 PhysFS 和 Lua 中它是 zlib 版本 1.2.3,在解析器中它是 1.2.5。它们在同一个 VS2010 解决方案中,但在不同的项目中。构建每个项目都很好。然而,VS2010 报告链接器错误,说 _adler32、_inflate 等已在构建最终可执行文件时定义。奇怪的是,当我在两台不同的计算机上工作时,一台提示 Lua 和 PhysFS 中的多重声明,而另一台提示 Lua 和 xml 解析器。两者都使用 VS2010 Express。

我需要一个解决方法来避免此类问题。由于它们是维护良好的开源库,我不希望修改它们的源代码。

如果我将它们分别编译成 .dll 和 .lib 是否可行?我的理解是,多个 zlib 声明仍将位于不同的 .lib 文件中。是真的吗?

谢谢。

最佳答案

解决这个问题的一种方法是通过动态链接,即预构建的 DLL 和相应的 lib 文件。在 lib 文件中,只有部分符号(声明)暴露给使用此 DLL 的项目。由于 zlib 符号是隐藏的,因此可以拥有多个 zlib 拷贝。

关于c++ - 多个开源库中的多个 zlib,链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19734012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com