我正在开发一个涉及 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 文件中。真的吗?
谢谢。