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")
}

だから私はそれが問題ではないことを知っています。私が理解していないのは、コンパイラの出力 (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 を使用しています。

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拡張子があります..確かではありません..

-Arps

于 2009-10-07T12:48:13.293 に答える