Incluindo uma biblioteca em Qt, porque não é este trabalho?
-
19-09-2019 - |
Pergunta
Este parece que deve ser muito simples. Eu compilei uma biblioteca em Qt (este Newmat biblioteca ), e produziu o libnewmat.a arquivo. Agora eu preciso para integrar esta biblioteca em outro projeto, mas eu simplesmente não consigo fazê-lo funcionar.
Eu tentei algumas coisas diferentes com a variável LIBS no meu arquivo .pro incluindo:
Win32:LIBS += libnewmat.a #library is in same directory as the project
Win32:LIBS += "C:/...path.../libnewmat.a"
Win32:LIBS += L"C:/...path..." -lnewmat
Eu mesmo tentei usar frente e para trás barras no caminho, mas isso não fez diferença. Eu também incluem essa verificação para garantir que a biblioteca é realmente encontrado:
!exists(libnewmat.a) {
error("libnewmat.a does not exist")
}
Assim que eu sei que não é o problema. O que eu não entendo é que quando eu Ctrl + F a saída do compilador (que exibe os comandos que qmake está usando na linha de comando), eu não encontrar qualquer referência à biblioteca. Por alguma razão o meu variável LIBS não está fazendo alguma diferença na linha de comando, que é onde eu esperaria que fosse. Aqui está um exemplo da saída do compilador onde eu esperaria a biblioteca a ser referenciado se alguém gostaria de dupla verificação:
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
Eu suspeito que há algo realmente simples que estou em falta aqui.
Eu estou usando QtCreator no Windows Vista.
Solução
Eu acho que as condições de escopo são maiúsculas de minúsculas:
win32:LIBS += libnewmat.a # lowercase w
Outras dicas
Eu tenho o mesmo problema. Não é possível link para uma biblioteca estática de uma biblioteca estática? De qualquer forma, se você fizer uma biblioteca compartilhada, removendo CONFIG+=static
do arquivo .pro a evitar esse problema.
Cheers, H
u não precisa de um monte de libs em pro arquivo. tente isso, ele trabalhou para mim.
Win32: IncludePath + =.
Win32: LIBS + = "C: / ... caminho ... / libnewmat.a"
ou
Win32:. DEPENDPATH + =
Win32: LIBS + = "C: / ... caminho ... / libnewmat.a"
Além disso libnewmat.a poderia ser biblioteca linux .. normalmente janelas libs tem extensão .lib .. não tenho certeza embora ..
-Arps