6

Qt アプリケーションをそのライブラリとリンクしようとしていますが、リンカー (MinGW) が次のような行を何百も吐き出します。どうすればよいかわかりません。

cpp: `_Unwind_SjLj_Register' への未定義の参照
 c:/qt/lib/libQtCore.a(qcoreapplication_win.o)(.text+0x29d):qcoreapplication_win.
 cpp: `_Unwind_SjLj_Unregister' への未定義の参照
 c:/qt/lib/libQtCore.a(qcoreapplication_win.o)(.text+0x38c):qcoreapplication_win.
 cpp: `_Unwind_SjLj_Resume' への未定義の参照
 c:/qt/lib/libQtCore.a(qcoreapplication_win.o)(.text+0x4ce):qcoreapplication_win.
 cpp: `_Unwind_SjLj_Register' への未定義の参照
 c:/qt/lib/libQtCore.a(qcoreapplication_win.o)(.text+0x53e):qcoreapplication_win.
 cpp: `_Unwind_SjLj_Unregister' への未定義の参照
 c:/qt/lib/libQtCore.a(qcoreapplication_win.o)(.text+0x635):qcoreapplication_win.
 cpp: `_Unwind_SjLj_Resume' への未定義の参照
4

3 に答える 3

6

わかりません...しかし、私には、Unwindに関するものを吐き出すことは、ライブラリが例外付きでコンパイルされているかどうかと、アプリケーションが例外付きでコンパイルされているかどうかが一致していないことを示唆しています。

例外が必要な場合は、qmake ファイルに次の行を追加して、例外が有効になっていることを確認してください。

CONFIG += exceptions

または、例外が必要ない場合は、反対を使用します

CONFIG -= exceptions

何をするにしても、これを自分で設定するために C++ コンパイラ オプションを使用しないでください。

于 2008-10-13T23:04:40.793 に答える
1

私が Qt の開発を行ってからしばらく経ちましたが、このような膨大な数のメッセージを吐き出した覚えがあるのは、2、3 のインスタンスだけでした。

  • Qt のインクルード ファイルは、共有ライブラリとは異なるバージョンでした...これはアップグレード時に発生し、何らかの理由でインクルード ファイルを手動でアップグレードする必要がありました。
  • Qt ライブラリが完全に欠落していました...コンパイラが動作していたことをぼんやりと覚えていますが、最初に起動したときにリンカーが失敗しました。

私は ARM プロセッサを対象とした Qt の開発を行っていたので、クロス コンパイルの際にさらに奇妙な点がありました。

于 2008-10-13T22:51:15.890 に答える
0

私が知っている2つの考えられる理由:

  1. gcc4 ライブラリを gcc3 リンカーとリンクしようとした場合。
  2. -lstdc++コンパイルコマンドの最後にフラグが必要です
于 2012-08-16T01:38:18.267 に答える