如何通过MinGW为Qt构建Interbase插件

时间:2013-03-01 08:07:27

标签: qt plugins mingw

我想使用MinGW工具链为Qt构建Interbase插件。 根据{{​​3}},我只能通过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\运行它。整个输出很长,但有很多相似的线,这就是为什么我只显示其中一个和最后一行

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

你能告诉我,我应该如何实现我的目标。谢谢。

P.S。我google了很多,看到了这种静止 - Qt documentation - 但是没有确切的答案该做什么......

1 个答案:

答案 0 :(得分: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
...

插件已成功构建