打开ODBC数据库时Qt应用程序崩溃

时间:2015-05-26 21:46:00

标签: c++ sql qt odbc

我正在开发一个与外部ODBC数据库连接的应用程序。 当我在Qt上运行它时,一切正常,但是当我尝试独立打开时,它总是在m_db-> open()上崩溃。

当应用程序崩溃时,会出现此错误:

Segmentation fault (core dumped)

以下是代码:

m_db = new QSqlDatabase(QSqlDatabase::addDatabase("QODBC","edb"));
m_db->setDatabaseName(m_line);
m_db->open(); // <-// app crash here!

其中:

m_line = "Driver=/opt/sqlanywhere12/lib64/libdbodbc12.so;CommLinks=tcpip(Host=ip;port=port);ServerName=db;DatabaseName=db;Uid=uid;Pwd=psswd;"

任何人都有一些线索?

我正在运行Ubuntu 14.04 64位。 谢谢,

修改

好吧,经过一些更多测试后,如果我从m_line变量中删除了驱动程序配置,它似乎就会停止崩溃,但显然它会停止工作......

EDIT2

从Qt creator配置自定义运行后,它表示反汇编程序上的断点是0x7ffff6a777b9。这是什么意思?

2 个答案:

答案 0 :(得分:1)

您如何使用QSqlDatabaseQSqlDatabase实例是可通过连接名称检索的内部连接的句柄,它们不控制连接的生命周期。 所以它应该在stack

上声明
m_db = QSqlDatabase::addDatabase("QODBC","edb"));
m_db.setDatabaseName(m_line);     
m_db.open();

答案 1 :(得分:0)

嗯,有史以来最愚蠢的陷阱...... 我忘了在执行时添加LD_LIBRARY_PATH。