Pregunta

Esta parece que debería ser un proceso más sencillo. He compilado una biblioteca en Qt (esto NEWMAT biblioteca ), y produjo el libnewmat.a archivo. Ahora necesito para integrar esta biblioteca en otro proyecto, pero simplemente no puedo conseguir que funcione.

He intentado algunas cosas diferentes con la variable LIBS en mi archivo .pro incluyendo:

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

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

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

Incluso he intentado utilizar barras diagonales hacia adelante y atrás en el camino, pero no había ninguna diferencia. También incluyo esta comprobación para asegurarse de que la biblioteca se encuentra realmente:

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

Así que sé que no es el problema. Lo que no entiendo es que cuando Ctrl + F la salida del compilador (que muestra los comandos que QMake está utilizando la línea de comandos), no encuentro ninguna referencia a la biblioteca. Por alguna razón mi variable de LIBS no hace ninguna diferencia en la línea de comandos que es donde me esperaba que fuera. Este es un ejemplo de la salida del compilador donde yo esperaría que la biblioteca para hacer referencia a si alguien quiere comprobar:

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

Sospecho que hay algo muy simple que me falta aquí.

Estoy usando QtCreator en Windows Vista.

¿Fue útil?

Solución

Creo que las condiciones de alcance entre mayúsculas y minúsculas:

win32:LIBS += libnewmat.a  # lowercase w

Otros consejos

Tengo el mismo problema. ¿No es posible enlazar con una biblioteca estática de una biblioteca estática? De todos modos, si usted hace una biblioteca compartida mediante la eliminación de CONFIG+=static en el archivo .pro a evitar este problema.

Cheers, H

u no necesita una gran cantidad de librerías en el archivo profesional. probar esto, que trabajó para mí.

Win32: INCLUDEPATH + =.

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

o

Win32:. DEPENDPATH + =

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

También puede haber libnewmat.a biblioteca de Linux .. normalmente bibliotecas de Windows tienen la extensión .lib .. no es segura, sin embargo ..

-Arps

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top