0

Interbase サポートを Qt にコンパイルするためにhttp://doc.qt.nokia.com/stable/sql-driver.html#qibaseの指示に従い、すべてのライブラリが適切な場所にあることを確認しました。qmake は正常に実行されますが、nmake を実行すると、qsql_ibase.cpp で一連の未定義の参照エラーが発生します。Qt Creator で .pro を開き、未定義の参照エラーをスローしている関数の 1 つにカーソルを合わせて記号 (F2) をたどると、それが宣言されている ibase.h ファイルに移動します。関数定義がないため、未定義の参照エラーがスローされていますか? その場合、ライブラリが見つからないというエラーが表示されないのはなぜですか?

出力例:

ライブラリ ファイルの作成: debug\libqsqlibased4.a debug/qsql_ibase.o: in function getIBaseError': C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../../sql/drivers/ibase /qsql_ibase.cpp:80: undefined reference toisc_sqlcode' C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../../sql/drivers /ibase /qsql_ibase.cpp:85: isc_dsql_free_st ament への未定義参照isc_interprete' debug/qsql_ibase.o:C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../. ./sql/drivers/ibase/qsql_ibase.cpp:406: undefined reference to' debug/qsql_ibase.o:C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../. ./sql/drivers/ibase/qsql_ibase.cpp:421: isc_create_blob2 ' debug/qsql_ibase.o:C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../. ./sql/drivers/ibase/qsql_ibase.cpp:427: undefined reference toisc_put_segment への未定義の参照'

これは、さらに多くのエラー、すべて未定義の参照に対して続きます。

4

2 に答える 2

0

上記のリンク先のページの「トラブルシューティング」セクションで言及されている最初の問題のように聞こえます

プロジェクトで使用しているのと同じコンパイラでコンパイルされたクライアント ライブラリを常に使用する必要があります。クライアント ライブラリを自分でコンパイルするためのソース配布を入手できない場合は、コンパイル済みのライブラリがコンパイラと互換性があることを確認する必要があります。そうしないと、多くの「未定義シンボル」エラーが発生します。一部のコンパイラには、ライブラリを変換するツールがあります。たとえば、Borland は、Microsoft Visual C++ で生成されたライブラリを変換するツール COFF2OMF.EXE を出荷しています。

Qt をコンパイルするためにどのコンパイラを使用していますか? Interbase ライブラリはどこで入手しましたか? また、これらのライブラリがリンク時に見つかることを確認する必要があります。コンパイラの出力を見ると、検索対象のすべてのリンク ディレクトリが表示されます (Windows の PATH など、グローバルに定義されたディレクトリに加えて)。Interbase ライブラリのフォルダがリストされている場合は、おそらくコンパイラのバージョンが一致していません。

于 2011-11-07T16:04:08.387 に答える
0

古いテーマを取り上げて申し訳ありませんが、解決策を見つけたので共有したいと思います。ISC_EXPORT問題は、条件付きコンパイルの定義により、Interbase の SDK でマクロが定義されていないことです。詳細はこちら - Howto build Interbase plugin for Qt by MinGW

于 2013-03-14T05:54:26.390 に答える