首页| 论坛| 消息

标题:VS2019+QT5.15.2工程中调用VS2010+QT4.8.6生成的DLL报异常怎么解决?
作者:gouxionglily
日期:2021-05-28 10:04
内容:

如题。
我有一个VS2010+QT4.86环境下编绎生成的DLL,现在需要在VS2019+QT5.15.2环境中使用它。考虑到DLL理论上并不与QT有关,只要32位或者64位对应调用32位或者64位的DLL即可,因此决定试一下。试用的结果是:
1.确实能调起来,VS2019+QT5.15.2工程中能调用VS2010+QT4.8.6生成的DLL,程序能正常启动。
2.传参报异常。就是在VS2019+QT5.15.2工程中调用VS2010+QT4.8.6生成的DLL时,由VS2019+QT5.15.2工程向VS2010+QT4.8.6生成的DLL中传参数后,VS2010+QT4.8.6生成的DLL无法识别传入的参数。不管是值传递还是引用传递,都不对。
示例代码如下:
(一)VS2010+QT4.8.6生成的DLL中的接口函数示例:
bool DbDLL::init(QString dbPath)
{
QSqlDatabase m_database;
const char* dbname = "sqlite";
if(QSqlDatabase::contains(dbname)){
m_database = QSqlDatabase::database(dbname);
}else{
m_database = QSqlDatabase::addDatabase("QSQLITE",dbname);
m_database.setHostName("localhost");
m_database.setPort(0);
m_database.setUserName("root");
m_database.setPassword("root");
dbPath.replace('\\','/');
m_database.setDatabaseName(dbPath);
}
// 如果数据库无法打开,则返回false
if(!m_database.open()){
QString str=m_database.lastError().text();
QMessageBox::warning(NULL,"AOIDB",str,QMessageBox::Cancel,QMessageBox::Yes);
return false;
}
}
(二 ..

回复 发表
主题 版块