我正在尝试使用两个静态链接库编译我的程序:SFML和PhysFS。但是,在链接阶段,我收到以下错误:
eror LNK2005:_inflatePrime已经在sfml-graphics-s.lib(inflate.obj)中定义了
错误LNK2005:_inflateGetHeader已在sfml-graphics-s.lib(inflate.obj)中定义 错误LNK2005:_adler32_combine已在sfml-graphics-s.lib(adler32.obj)中定义 错误LNK2005:_crc32_combine已在sfml-graphics-s.lib(crc32.obj)中定义
错误LNK1169:找到一个或多个多重定义的符号
当两个完全不相关的图书馆发生这种冲突时,我该怎么办?
编辑:哦,请 - 请告诉我,我不打算写一个包装。我已经厌倦了要把事情搞定,我只想写自己的代码。 :(
答案 0 :(得分:9)
两个库似乎都倾向于包含zlib库而不是依赖它。我尝试在没有这个包含的情况下构建它们并将可执行文件与zlib链接。
答案 1 :(得分:0)
假设您有库源代码,这可能就像添加几个名称空间一样简单。在库A的头文件中:
namespace LibA {
// existing function declarations
}
并在C ++源文件中:
namespace LibA {
// existing code
}
库B相同,但名称空间不同。我意识到这很痛苦,但如果图书馆真的有名字冲突,那就是最干净的方法。