我正在将整个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)
答案 0 :(得分:0)
您无法静态链接两个不同版本的wxWidgets。你能做的最好的事情就是动态链接至少一个,以避免混淆,可能两者都更好。
然而,我实际上正在研究为什么wxhtttpengine不能与wxWidgets 3.0一起使用。解决这个问题应该不难,使用单个版本的库显然要简单得多。