VC ++指定库顺序 - 错误LNK2005:已定义

时间:2015-03-16 13:06:18

标签: visual-studio visual-c++ static-libraries wxwidgets upgrade

我正在将整个Visual Studio解决方案从wxWidgets-2.6.4(A)升级到wxWidgets-3.0.2(B)。有一个问题,因为有些项目使用wxhttpengine-2.0(Z),它不适用于比2.6.x更新的wxWidgets版本。为了简化问题,我用字母A,B和Z标记了3个静态库。所以,我的解决方案包含A和Z,Z包含A的部分,但我想在保持Z的同时使用B代替A,按顺序简化我的解决方案的代码。问题是,简单地这样做会导致错误 - LNK2005:已在httpengine.lib中定义 - 用于wxWidgets.3.0.2静态库。链接器发现A和B中的冲突符号,因为Z构建在A之上。

一般问题:如何从A升级到B包含Z?

的项目

具体问题:是否可以在Visual Studio中指定我首先要与B链接然后再与Z链接?

以下是一个示例错误:

  

错误1错误LNK2005:“public:class wxSize __thiscall   wxWindowBase :: GetBestSize(void)const“   (?GetBestSize @ wxWindowBase @@ QBE?AVwxSize @@ XZ)已定义于   httpengined.lib(proxysettingsdlg.obj)PATH \ wxmsw30ud_core.lib(hidden_​​filename.obj)

1 个答案:

答案 0 :(得分:0)

您无法静态链接两个不同版本的wxWidgets。你能做的最好的事情就是动态链接至少一个,以避免混淆,可能两者都更好。

然而,我实际上正在研究为什么wxhtttpengine不能与wxWidgets 3.0一起使用。解决这个问题应该不难,使用单个版本的库显然要简单得多。

相关问题