У меня есть приложение, созданное с помощью QtCreator (QT5.13), которое состоит из приложения MyApp и, скажем, одной динамической библиотеки MyLib.
Эта динамическая библиотека также вызывает функции, определенные в приложении.
1) При правильном значении INCLUDEPATH и файлах заголовков мой проект компилируется и выполняется на платформе Windows с использованием MSVC.
2) Я перенес проект на Unix Ubuntu (QT5.13) также с успехом, но с незначительными изменениями в .PRO, в основном добавив «-r dynamic» и удалив прямую ссылку « LIBS + = $$ PWD /lib/MyApp.lib"
3) Теперь я пошел, чтобы скомпилировать мой проект на платформе Windows с Mingw (mingw730_64).
Приложение компилируется и генерируется исполняемый файл. Но я получаю ошибку с компоновщиком MyLib. Например:
ошибка: неопределенная ссылка на `__imp__ZN13FBSFBaseModelC2Ev '
и для всех символов, присутствующих в MyApp, которые вызываются MyLib.
Я явно не понимаю процесс связи с платформами и как компилятору удается разрешать символы статически или динамически.
Спасибо за помощь
На Windows и Mingw я пробовал без
GCC: QMAKE_LFLAGS + = -r динамический
получить неопределенные ссылки.
Я пытался использовать " GCC: QMAKE_LFLAGS + = -r dynamic ", но, похоже, winGW
не распознается
MyApp.PRO, которое работает для windows / MVSC:
TARGET = MyApp
TEMPLATE = app
LIBS += -L$$PWD/lib -lOtherLib
GCC:QMAKE_LFLAGS += -r dynamic
MyLib.PRO для Linux и GCC, который работает:
TARGET = MyLib
TEMPLATE = lib
WIN32:LIBS += $$PWD/lib/MyApp.lib