-1

Я обновляю все решение Visual Studio от wxWidgets-2.6.4 (A) до wxWidgets-3.0.2 (B). Существует проблема, потому что в некоторых проектах используется wxhttpengine-2.0 (Z), который не работает с версиями wxWidgets, новее чем 2.6.x. Чтобы упростить вопросы, я обозначил 3 статических библиотеки буквами A, B и Z. Итак, мое решение содержит A и Z, Z содержит части A, но я хочу использовать B вместо A, сохраняя Z, для того, чтобы для упрощения кода моего решения. Проблема в том, что просто это вызывает ошибку - LNK2005: уже определен в httpengine.lib - для wxWidgets.3.0.2 статических библиотек. Конфликтующие символы из A и B обнаруживаются компоновщиком, потому что Z построен поверх A.VC++ указать порядок библиотеки - ошибка LNK2005: уже определена

Общий вопрос: Как я могу обновить от A до B проекты, содержащие Z?

Конкретный вопрос: Можно ли указать в Visual Studio, что я хочу сначала связать с B, а затем с Z?

Вот ошибка выборки:

Error 1 error LNK2005: "public: class wxSize __thiscall wxWindowBase::GetBestSize(void)const " ([email protected]@@[email protected]@XZ) already defined in httpengined.lib(proxysettingsdlg.obj) PATH\wxmsw30ud_core.lib(hidden_filename.obj)

ответ

0

Вы не можете статически связать с двумя различными версиями WxWidgets. Лучшее, что вы могли бы сделать, это связать динамически с хотя бы одним и, во избежание путаницы, вероятно, лучше с обоими из них.

Однако я бы действительно изучил, почему именно wxhtttpengine не работает с wxWidgets 3.0. Нетрудно это исправить, и использование одной версии библиотеки, очевидно, намного проще.

+0

Спасибо за ответ. Идея заключалась в создании 1 большого исполняемого файла на основе статических библиотек. Я попытаюсь посмотреть, можно ли динамически связывать старые wxWidgets при использовании новой версии со статическими библиотеками. Кроме того, я подумал о том, чтобы обновить wxhttpengine, но хотел бы найти альтернативное решение, прежде чем делать это. – MatrixRonny

Смежные вопросы