• 8082阅读
  • 2回复

求助,vs2005下编译静态的连接mysql的qt程序的问题 [复制链接]

上一主题 下一主题
离线heykett
 

只看楼主 正序阅读 楼主  发表于: 2010-03-12
— 本帖被 XChinux 执行加亮操作(2010-03-18) —
qt版本 Using Qt version 4.4.0(qt-all-opensource-src-4.4.0),并且用vs2005静态编译成功,在vs2005下可以编译一般的qt程序。
但问题是编译连接mysql数据库的时候出现问题了。望高手指教。
代码段:
  1. #include <QtPlugin>
  2. Q_IMPORT_PLUGIN(qsqlmysql)
  3. int main(int argc, char *argv[])
  4. {
  5. ........
  6. QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  7.     db.setHostName(db_hostname);
  8.     db.setDatabaseName(db_database);
  9.     db.setUserName(db_username);
  10.     db.setPassword(db_password);
  11.     if (db.open() == false)
  12.     {
  13.         QMessageBox::critical(NULL, QObject::tr("错误cuowu"),db.lastError().text() , QMessageBox::Ok, QMessageBox::NoButton);    
  14.         return !EXIT_SUCCESS;
  15.     }
  16. ..............
  17. }


${QTDIR}\plugins\sqldrivers下也生成了qsqlmysql.lib。
vs2005下编译,LINK时出现如下error:

qsqlmysql.lib(qsql_mysql.obj) : error LNK2019: unresolved external symbol _mysql_character_set_name@4 referenced in function "class QTextCodec * __cdecl codec(struct st_mysql *)" (?codec@@YAPAVQTextCodec@@PAUst_mysql@@@Z)
qsqlmysql.lib(qsql_mysql.obj) : error LNK2019: unresolved external symbol _mysql_errno@4 referenced in function "class QSqlError __cdecl qMakeError(class QString const &,enum QSqlError::ErrorType,class QMYSQLDriverPrivate const *)" (?qMakeError@@YA?AVQSqlError@@ABVQString@@W4ErrorType@1@PBVQMYSQLDriverPrivate@@@Z)
qsqlmysql.lib(qsql_mysql.obj) : error LNK2019: unresolved external symbol _mysql_error@4 referenced in function "class QSqlError __cdecl qMakeError(class QString const &,enum QSqlError::ErrorType,class QMYSQLDriverPrivate const *)" (?qMakeError@@YA?AVQSqlError@@ABVQString@@W4ErrorType@1@PBVQMYSQLDriverPrivate@@@Z)
qsqlmysql.lib(qsql_mysql.obj) : error LNK2019: unresolved external symbol _mysql_stmt_errno@4 referenced in function "class QSqlError __cdecl qMakeStmtError(class QString const &,enum QSqlError::ErrorType,struct st_mysql_stmt *)" (?qMakeStmtError@@YA?AVQSqlError@@ABVQString@@W4ErrorType@1@PAUst_mysql_stmt@@@Z)
qsqlmysql.lib(qsql_mysql.obj) : error LNK2019: unresolved external symbol _mysql_stmt_error@4 referenced in function "class QSqlError __cdecl qMakeStmtError(class QString const &,enum QSqlError::ErrorType,struct st_mysql_stmt *)" (?qMakeStmtError@@YA?AVQSqlError@@ABVQString@@W4ErrorType@1@PAUst_mysql_stmt@@@Z)
qsqlmysql.lib(qsql_mysql.obj) : error LNK2019: unresolved external symbol _mysql_fetch_row@4 referenced in function "protected: virtual bool __thiscall QMYSQLResult::fetch(int)" (?fetch@QMYSQLResult@@MAE_NH@Z)
。。。。。
望高手指教
离线ws01000101

只看该作者 2楼 发表于: 2010-08-12
请问你是怎么集成vs2005 qt 以及mysql的,我qt和vs2005已经集成了,但是mysql一直不行,说找不到mysql.h文件,
离线heykett

只看该作者 1楼 发表于: 2010-03-12
问题自己解决,需要添加mysql\lib\opt下的libmysql.lib,不能只添加qsqlmysql.lib。并且在运行时需要libmysql.dll,把mysql\lib\opt下的libmysql.dll 复制运行目录下便解决。
快速回复
限100 字节
 
上一个 下一个