在Qt中编译InterBase支持

时间:2011-11-07 15:33:50

标签: qt plugins interbase

我已按照http://doc.qt.nokia.com/stable/sql-driver.html#qibase上的说明将Interbase支持编译到Qt中,并确保我的所有库都在正确的位置。 qmake运行成功,但是当我运行nmake时,我在qsql_ibase.cpp中得到一系列未定义的引用错误。如果我在Qt Creator中打开.pro并将鼠标悬停在其中一个抛出未定义引用错误的函数上并按照符号(F2),它会将我带到声明它的ibase.h文件中。它是否抛出未定义的引用错误,因为没有函数定义?如果是这样的话,为什么不给我任何关于遗失库的错误?

输出示例:

  

创建库文件:debug \ libqsqlibased4.a   debug / qsql_ibase.o:在函数getIBaseError': C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../../sql/drivers/ibase /qsql_ibase.cpp:80: undefined reference to isc_sqlcode'中   C:\ QTSDK \ QtSources \ 4.7.4 \型钢\插件\ sqldrivers \ IBASE /../../../ SQL /司机/ IBASE   /qsql_ibase.cpp:85:对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的未定义引用isc_dsql_free_st   atement”   调试/ qsql_ibase.o:C:\ QTSDK \ QtSources \ 4.7.4 \型钢\插件\ 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 to isc_put_segment'

这会继续发生更多错误,所有未定义的引用。

2 个答案:

答案 0 :(得分:0)

真的听起来像是您在上面链接的页面的“疑难解答”部分中提到的第一个问题:

  

您应始终使用已编译的客户端库   与您用于项目的编译器相同。如果你不能得到   您自己编译客户端库的源代码分配   必须确保预编译的库与您的库兼容   编译器,否则你会得到很多“未定义的符号”错误。   一些编译器具有转换库的工具,例如Borland发货了   工具COFF2OMF.EXE转换生成的库   Microsoft Visual C ++。

您使用哪种编译器来编译Qt,以及您从哪里获得Interbase库?您还需要确保在链接时可以找到这些库。如果查看编译器的输出,它应该显示它正在搜索的所有链接目录(除了任何全局定义的,如Windows中的PATH。)如果列出了包含Interbase库的文件夹,则可能是编译器版本不匹配。

答案 1 :(得分:0)

很抱歉提出这么老的主题,但我找到了一个解决方案并希望与之分享。问题是由于条件编译定义,在Interbase的SDK中没有定义宏ISC_EXPORT。详情请见Howto build Interbase plugin for Qt by MinGW