2013-03-01 44 views
0

我想使用MinGW工具鏈爲Qt構建Interbase插件。 據Qt documentation,我只能通過MSVC做到這一點,但我需要MinGW的...所以,我寫了這個.cmd文件Howto使用MinGW爲Qt構建Interbase插件

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\運行它。全輸出很長,但有很多類似的線,這就是爲什麼我會告訴只是其中之一,並最終線

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 

你能告訴我,我應該怎麼achive我的目標。謝謝。

P.S.我googled了很多,看到這個quiestion - Compiling InterBase support in Qt - 但沒有確切的答案該怎麼辦...

回答

0

我已經做到了!

問題出在Interbase SDK的頭文件ibase.h上。有以下幾行:

#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 
... 

插件是successfuly建立