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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top