2009-07-28 81 views
0

這看起來應該很簡單。我編譯了一個Qt庫(這個newmat library),並生成了libnewmat.a文件。現在我需要將這個庫整合到另一個項目中,但我無法完成它的工作。在Qt中包含一個庫,爲什麼這不起作用?

我試着用LIBS變量的幾個不同的東西在我的.pro文件包括:

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編譯器輸出(顯示命令qmake在命令行使用),我沒有找到任何引用該庫。出於某種原因,我的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。

回答

4

我覺得範圍的條件是區分大小寫的:

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

我有非常相同的問題。難道不可能從靜態庫鏈接到靜態庫嗎?無論如何,如果您通過從.pro文件中刪除CONFIG+=static來製作共享庫,則可以避免此問題。

乾杯, ^ h

0

ü不需要在親文件很多林達。試試這個,它對我有用。

Win32:INCLUDEPATH + =。

的Win32:LIBS + = 「C:/ ...路徑.../libnewmat.a」

的Win32:DEPENDPATH + =。

的Win32:LIBS + = 「C:/ ... ...路徑/ libnewmat.a」

而且libnewmat.a可能是linux的庫..通常窗戶庫擁有的.lib擴展..不知道雖然..

-Arps