Ошибка LNK 2019: Qt Project работает в MINGW, а не в MSVC - PullRequest
0 голосов
/ 19 июня 2020

У меня есть проект с несколькими связанными библиотеками. Одна конкретная библиотека связана с другой и вызывает символ, который, как утверждает компоновщик, не определен.

Я связался с библиотекой, которая должна иметь этот символ в файле .pro как таковой:

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../SourceLibrary/release/ -lSourceLibrary
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../SourceLibrary/debug/ -lSourceLibrary
else:unix: LIBS += -L$$OUT_PWD/../SourceLibrary/ -lSourceLibrary

INCLUDEPATH += $$PWD/../SourceLibrary
DEPENDPATH += $$PWD/../SourceLibrary

Это правильно связывается с использованием MINGW, поэтому меня не беспокоят опечатки в именах библиотек или определениях / объявлениях функций.

Изучив SourceLibrary в Dependencies, я заметил, что требуемые символы действительно не там.

Это заставило меня исследовать Makefile для SourceLibrary, однако файл с необходимыми символами, по-видимому, упоминался так же, как и другие файлы с символами.

I также проверил промежуточный файл .obj, который должен был содержать символы с dumpbin, и файл действительно имел их, и с тем же искажением, что и отчет об ошибке компоновщика.

Дальнейшее исследование с использованием dumpbin / ALL показало, что символы были в файле SourceLibrary.dll, что противоречило зависимостям, а также l как ошибка компоновщика.

Таким образом, я не понимаю, почему и компоновщик, и зависимости не видят символы, которые должны быть в библиотеке. Я подозреваю различия между компиляторами MSVC / MINGW, но, очевидно, на данный момент у меня есть только подозрения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...