2009-07-28 4 views
0

Cela semble être très simple. J'ai compilé une bibliothèque dans Qt (ce newmat library), et a produit le fichier libnewmat.a. Maintenant, j'ai besoin d'intégrer cette bibliothèque dans un autre projet, mais je ne peux tout simplement pas le faire fonctionner.Y compris une bibliothèque dans Qt, pourquoi cela ne fonctionne-t-il pas?

J'ai essayé quelques choses différentes avec la variable LIBS dans mon fichier .pro y compris:

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

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

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

J'ai même essayé d'utiliser des barres obliques avant et en arrière sur le chemin, mais il n'a fait aucune différence. Je ajoute aussi cette vérification pour vous assurer que la bibliothèque est effectivement trouvé:

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

Je sais que c'est pas le problème. Ce que je ne comprends pas, c'est que quand je ctrl + f la sortie du compilateur (qui affiche les commandes que qmake utilise sur la ligne de commande), je ne trouve aucune référence à la bibliothèque. Pour une raison quelconque, ma variable LIBS ne fait aucune différence sur la ligne de commande, ce à quoi je m'attendrais. Voici un exemple de la sortie du compilateur où j'attendre que la bibliothèque soit référencée si quelqu'un voudrait vérifier:

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 

Je soupçonne qu'il ya quelque chose de vraiment simple que je suis absent ici. J'utilise QtCreator sur Windows Vista.

Répondre

4

Je pense que les conditions d'identification sont sensibles à la casse:

win32:LIBS += libnewmat.a # lowercase w 
0

J'ai le problème même. N'est-il pas possible de lier à une bibliothèque statique à partir d'une bibliothèque statique? De toute façon si vous faites une bibliothèque partagée en supprimant CONFIG+=static du fichier .pro vous évitez ce problème.

Cheers, H

0

u dont ont besoin de beaucoup de libs dans le fichier pro. essayez ceci, cela a fonctionné pour moi.

Win32: INCLUDEPATH + =.

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

ou

Win32: DEPENDPATH + =.

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

Aussi libnewmat.a peut-être bibliothèque linux .. normalement windows libs ont l'extension .lib .. pas sûr cependant ..

-Arps

Questions connexes