这看起来应该非常简单。我在Qt(this 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编译输出(显示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。
答案 0 :(得分:4)
我认为范围条件区分大小写:
win32:LIBS += libnewmat.a # lowercase w
答案 1 :(得分:0)
我遇到了同样的问题。是不是可以从静态库链接到静态库?无论如何,如果通过从.pro文件中删除 CONFIG+=static
来创建共享库,则可以避免此问题。
干杯, ħ
答案 2 :(得分:0)
你不需要在pro文件中有很多libs。试试这个,它对我有用。
Win32:INCLUDEPATH + =。
Win32:LIBS + =“C:/ ... path ... / libnewmat.a”
或
Win32:DEPENDPATH + =。
Win32:LIBS + =“C:/ ... path ... / libnewmat.a”
另外libnewmat.a可能是linux库..通常windows libs都有.lib扩展名..虽然不确定..
-Arps