Вопрос

Кажется, это должно быть очень просто.Я скомпилировал библиотеку на Qt (это библиотека Ньюмата) и создал файл libnewmat.a.Теперь мне нужно интегрировать эту библиотеку в другой проект, но я никак не могу заставить ее работать.

Я попробовал несколько разных вещей с переменной LIBS в моем файле .pro, в том числе:

Win32:LIBS += libnewmat.a #library is in same directory as the project

Win32:LIBS += "C:/...path.../libnewmat.a"

Win32:LIBS += L"C:/...path..." -lnewmat

Я даже пробовал использовать в пути косую черту вперед и назад, но это не имело никакого значения.Я также включаю эту проверку, чтобы убедиться, что библиотека действительно найдена:

!exists(libnewmat.a) {
    error("libnewmat.a does not exist")
}

Так что я знаю, что проблема не в этом.Чего я не понимаю, так это того, что когда я нажимаю Ctrl+F на выводе компилятора (который отображает команды, которые qmake использует в командной строке), я не нахожу никаких ссылок на библиотеку.По какой-то причине моя переменная LIBS не имеет никакого значения в командной строке, чего я и ожидал.Вот пример вывода компилятора, где я ожидаю, что на библиотеку будут ссылаться, если кто-то захочет дважды проверить:

g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2009.02\qt\include\QtCore" -I"..\..\..\..\Qt\2009.02\qt\include\QtGui" -I"..\..\..\..\Qt\2009.02\qt\include\QtOpenGL" -I"..\..\..\..\Qt\2009.02\qt\include" -I"..\Visual Studio Projects\NewMatProj\newmat10" -I"..\..\..\..\Qt\2009.02\qt\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\2009.02\qt\mkspecs\win32-g++" -o debug\moc_Window.o debug\moc_Window.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\GLPractice.exe debug/main.o debug/GLWidget.o debug/Window.o debug/CGSWidget.o debug/moc_GLWidget.o debug/moc_Window.o -L"c:\Qt\2009.02\qt\lib" -lopengl32 -lglu32 -lgdi32 -luser32 -lmingw32 -lqtmaind -lQtOpenGLd4 -lQtGuid4 -lQtCored4

Я подозреваю, что есть что-то очень простое, чего мне здесь не хватает.

Я использую QtCreator в Windows Vista.

Это было полезно?

Решение

Я думаю, что условия области чувствительны к регистру:

win32:LIBS += libnewmat.a  # lowercase w

Другие советы

У меня та же самая проблема.Нельзя ли сделать ссылку на статическую библиотеку из статической библиотеки?В любом случае, если вы создадите общую библиотеку, удалив CONFIG+=static из файла .pro вы избежите этой проблемы.

Ура, ч

вам не нужно много библиотек в профайле.попробуйте это, у меня это сработало.

Win32:ВКЛЮЧИТЬПУТЬ += .

Win32:LIBS += "C:/...путь.../libnewmat.a"

или

Win32:ПУТЬ ЗАВИСИМОСТИ += .

Win32:LIBS += "C:/...путь.../libnewmat.a"

Также libnewmat.a может быть библиотекой Linux.обычно библиотеки Windows имеют расширение .lib.хотя не уверен..

-Арпс

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top