我想使用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 - 但是没有确切的答案该做什么......
答案 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
...
插件已成功构建