0

我已按照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: In function getIBaseError': C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../../sql/drivers/ibase /qsql_ibase.cpp:80: undefined reference toisc_sqlcode' C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../../sql/drivers /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 toisc_dsql_free_statement' debug/qsql_ibase.o:C:\QtSDK\QtSources\4.7.4\src\plugins\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 toisc_put_segment'

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

4

2 回答 2

0

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

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

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

于 2011-11-07T16:04:08.387 回答
0

很抱歉提出这么老的主题,但我找到了一个解决方案并想与它分享。问题是ISC_EXPORT由于条件编译定义,宏没有在 Interbase 的 SDK 中定义。在此处查看详细信息 -如何通过 MinGW 为 Qt 构建 Interbase 插件

于 2013-03-14T05:54:26.390 回答