0

这看起来应该很简单。我在 Qt 中编译了一个库(这个newmat 库),并生成了文件 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。

4

3 回答 3

4

我认为范围条件区分大小写:

win32:LIBS += libnewmat.a  # lowercase w
于 2009-07-28T18:00:13.723 回答
0

我有同样的问题。不能从静态库链接到静态库吗?无论如何,如果您通过CONFIG+=static从 .pro 文件中删除来创建共享库,则可以避免此问题。

干杯,H

于 2009-08-07T09:04:21.313 回答
0

你不需要很多专业文件中的库。试试这个,它对我有用。

Win32:INCLUDEPATH += 。

Win32:LIBS += "C:/...路径.../libnewmat.a"

或者

Win32:DEPENDPATH += 。

Win32:LIBS += "C:/...路径.../libnewmat.a"

libnewmat.a 也可能是 linux 库.. 通常 Windows 库具有 .lib 扩展名.. 虽然不确定..

-阿尔普斯

于 2009-10-07T12:48:13.293 回答