2010-03-24 67 views
3

我有一个用VC6编译的旧C++项目。VC6链接冲突

我需要静态链接一个新的库来实现一个新的功能。

不幸的是,新库定义了一个符号(即_inflate),该符号已经在先前链接的静态库中定义。

当然,我无法摆脱任何一个图书馆,当然我也无法访问图书馆的源代码。

有没有办法避免链接器错误(LNK2005)?

回答

3

如果您知道_inflate的两个版本是相同的,或者至少“兼容”,那么您可以使用/FORCE:Multiple linker option强制它忽略名称冲突。

当然,如果它链接到某个版本的“不兼容”的代码,它可能会导致未定义的行为。

+0

嗯,我能够编译...但由于我不确定_inflate实现,我必须找到另一种解决方案(可能是dinamically链接其中之一)。谢谢 – Stefano 2010-03-24 18:14:38

+1

最简单的方法是强制一个链接,然后测试程序。如果你的程序不会直接或间接地导致_inflate被调用,那么就没有问题了。如果_inflate被调用,但实现足够类似(或不影响其他程序状态),那么它可能不会导致任何不良影响(通常您会在不同的库中找到两个相同的实现)。如果它确实被调用并且“不兼容”,那么你很可能会遇到一个非常明显的失败。所以我会尝试一下,如果它在测试中运行良好,那么您可能有一个可行的解决方案。 – 2010-03-24 20:53:37