Domanda

Questo sembra che dovrebbe essere molto semplice. Ho compilato una libreria in Qt (questo NEWMAT biblioteca ), e prodotto il file libnewmat.a. Ora ho bisogno di integrare questa libreria in un altro progetto, ma non riesco proprio a farlo funzionare.

Ho provato un paio di cose diverse con la variabile LIBS nel mio file .pro tra cui:

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

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

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

Ho anche provato ad utilizzare in avanti e indietro slash nel percorso, ma non faceva differenza. L'inserimento di questo controllo per assicurarsi che la libreria è effettivamente trovato:

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

Quindi so che non è il problema. Quello che non capisco è che quando ho Ctrl + F l'output del compilatore (che visualizza i comandi che QMake sta utilizzando nella riga di comando), non trovo alcun riferimento alla libreria. Per qualche ragione la mia variabile LIBS non fa alcuna differenza nella riga di comando che è dove mi aspettavo che fosse. Ecco un esempio di output del compilatore in cui mi sarei aspettato la libreria a cui fa riferimento, se qualcuno volesse raddoppiare controllo:

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

Ho il sospetto che ci sia qualcosa di veramente semplice che mi manca qui.

Sto usando QtCreator su Windows Vista.

È stato utile?

Soluzione

Credo che le condizioni di portata sono case sensitive:

win32:LIBS += libnewmat.a  # lowercase w

Altri suggerimenti

Ho lo stesso problema. Non è possibile fare riferimento a una libreria statica da una libreria statica? In ogni caso se si effettua una libreria condivisa rimuovendo CONFIG+=static da file .pro si evita questo problema.

Saluti, H

u dont bisogno di un sacco di librerie nel file di pro. provare questo, ha funzionato per me.

Win32: INCLUDEPATH + =.

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

o

Win32:. DEPENDPATH + =

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

Anche libnewmat.a potrebbe essere biblioteca linux .. normalmente librerie di Windows hanno estensione .lib .. non è sicuro però ..

-Arps

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top