0

MinGW ツールチェーンを使用して Qt 用の Interbase プラグインを構築したいと考えています。Qt のドキュメントによると、MSVC でしかできないのですが、MinGW が必要なので、この .cmd ファイルを書きました。

set QTDIR=C:\Qt\4.8.0-minGW
set PATH=C:\Qt\4.8.0-minGW\bin
set PATH=%PATH%;C:\MinGW\bin
set QMAKESPEC=win32-g++

set INCLUDE=%INCLUDE%;c:\Program Files\Borland\InterBase\SDK\include
set LIB=%LIB%;c:\Program Files\Borland\InterBase\SDK\lib_ms
qmake -o Makefile ibase.pro
mingw32-make.exe
pause

から実行しましたc:\Qt\4.8.0-minGW\src\plugins\sqldrivers\ibase\。出力全体は非常に長いですが、似たような行がたくさんあるので、そのうちの 1 行と最後の行だけを示します。

tmp/obj/debug_shared/qsql_ibase.o: In function `ZN12QIBaseDriver24qHandleEventNo
tificationEPv':
C:\Qt\4.8.0-minGW\src\plugins\sqldrivers\ibase/../../../sql/drivers/ibase/qsql_i
base.cpp:1845: undefined reference to `isc_event_counts'
C:\Qt\4.8.0-minGW\src\plugins\sqldrivers\ibase/../../../sql/drivers/ibase/qsql_i
base.cpp:1864: undefined reference to `isc_que_events'
collect2: ld returned 1 exit status
mingw32-make.exe: *** [debug-all] Error 2

目標を達成する方法を教えてください。ありがとうございました。

PS私はよくグーグルで検索し、このquiestionを見ました - Compiling InterBase support in Qt - しかし、何をすべきか正確な答えはありませんでした...

4

1 に答える 1

0

やりました!!!

ibase.h問題は、 Interbase の SDK のヘッダー ファイルにありました。次の行がありました:

#if (defined(_MSC_VER) && defined(_WIN32)) || \
    (defined(__BORLANDC__) && (defined(__WIN32__) || defined(__OS2__)))
...
#define  ISC_EXPORT    __stdcall
...

マクロISC_EXPORTが定義されておらず、すべての関数の宣言が間違っていました。これらの行を次のように変更したとき:

#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
...
#define  ISC_EXPORT    __stdcall
...

プラグインは正常にビルドされました

于 2013-03-14T05:45:35.790 に答える