문제

이것은 정말 간단해야합니다. 나는 QT에서 라이브러리를 편집했다 (이것 Newmat Library), libnewmat.a 파일을 생성했습니다. 이제이 라이브러리를 다른 프로젝트에 통합해야하지만 작동하게 할 수는 없습니다.

.Pro 파일에서 LIBS 변수를 사용하여 다음을 포함하여 몇 가지 다른 것을 시도했습니다.

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

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

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

나는 길에서 앞뒤 슬래시를 사용하려고 시도했지만 아무런 차이가 없었습니다. 또한 라이브러리가 실제로 발견되는지 확인하기 위해이 수표를 포함합니다.

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

그래서 나는 그것이 문제가되지 않는다는 것을 알고 있습니다. 내가 이해하지 못하는 것은 ctrl+f Compiler 출력 (qmake가 명령 줄에서 사용하는 명령을 표시 함)을 ctrl+f 할 때 라이브러리에 대한 참조를 찾지 못한다는 것입니다. 어떤 이유로 내 LIBS 변수는 명령 줄에 차이가 없을 것으로 예상되는 곳입니다. 다음은 누군가가 다시 확인하려면 라이브러리를 참조 할 것으로 예상되는 컴파일러 출력 샘플입니다.

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

나는 여기서 놓친 것이 정말 간단한 것이 있다고 생각합니다.

Windows Vista에서 QTCreator를 사용하고 있습니다.

도움이 되었습니까?

해결책

범위 조건은 대소 문자를 민감하다고 생각합니다.

win32:LIBS += libnewmat.a  # lowercase w

다른 팁

나도 같은 문제가 있습니다. 정적 라이브러리에서 정적 라이브러리에 링크 할 수 없습니까? 어쨌든 제거하여 공유 라이브러리를 만들면 CONFIG+=static .pro 파일 에서이 문제를 피하십시오.

건배, h

PRO 파일에 많은 libs가 필요하지 않습니다. 이것을 시도해보십시오. 그것은 나를 위해 일했습니다.

Win32 : IncludePath +=.

Win32 : libs += "c :/... path .../libnewmat.a"

또는

Win32 : 종속 경로 +=.

Win32 : libs += "c :/... path .../libnewmat.a"

또한 libnewmat.a는 Linux 라이브러리 일 수 있습니다. 일반적으로 Windows Libs는 .lib 확장을 가지고 있습니다 .. 확실하지 않습니다 ..

-arps

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top