在Qt中包含一个库,为什么这不起作用?

时间:2009-07-28 16:13:19

标签: qt gcc g++ static-libraries qmake

这看起来应该非常简单。我在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。

3 个答案:

答案 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