问题描述:
1、我用qt写了一个动态链接库,其中采用QODBC方式访问SQL Sever2005 数据库
2、该动态链接库在qt写的程序中动态加载,是没有任何错误的
3、用其他编译平台写的程序,动态加载这个DLL并调用该接口连接数据库,就会出现如下错误:

Debug Error!
QWidget:Must construct a QApplication before a QPaintDevice
(Press Retry to debug the application)
程序连接数据库的代码如下:
bool ConnDatabase()
{
QFile myfile("LFdatabase.ini");
QString DBDriver,HostName,DatabaseName,UserID,Password;
if (myfile.open(QIODevice::ReadOnly)) //数据库配置文件打开成功
{
//设置配置文件
QString DBSetting("LFdatabase.ini");
QSettings *settings=new QSettings(DBSetting,QSettings::IniFormat);
//读取数据库连接参数
settings->beginGroup("DATABASE");
DBDriver=settings->value("DBDriver",1024).toString();//数据库驱动方式
HostName=settings->value("DBHostName",1024).toString();//数据库服务器名称
DatabaseName=settings->value("ODBCDBName",1024).toString();//ODBC数据源中数据库名称
UserID=settings->value("UserName",1024).toString();//数据库用户名
Password=settings->value("UserPW",1024).toString();//数据库密码
settings->endGroup();
delete settings;
//设置数据库连接参数
QSqlDatabase *db=new QSqlDatabase;
db->addDatabase(DBDriver);
db->setHostName(HostName);
db->setDatabaseName(DatabaseName);
db->setUserName(UserID);
db->setPassword(Password);
if(!db->open()) //数据库打开失败
{
QMessageBox::critical(0,QObject::tr("Database Error"),db->lastError().text());
return false;
}
else
return true;
}
else//未能找到配置文件
{
QMessageBox::critical(0,QObject::tr("错误"),QObject::tr("数据库配置文件“LFdatabase.ini”未找到,请确认文件存在并且路径正确!"));
return false;
}
}