• 6304阅读
  • 8回复

[提问][求助]ODBC方式处理Excel文件[暂时算解决] [复制链接]

上一主题 下一主题
离线yanzhuliang
 

只看楼主 倒序阅读 楼主  发表于: 2013-04-17


我用的Qt版本是4.8.4,自己编译的静态库(configure -opensource -debug-and-release -fast -static -platform win32-msvc2010 -no-qt3support -qt-sql-sqlite -plugin-sql-sqlite -qt-sql-odbc -plugin-sql-odbc -nomake demos -nomake examples -nomake docs)。把\plugins\sqldrivers下的qsqlodbc.lib已经拷贝到工程目录,并正确配置了工程属性。本地的ODBC驱动都是正常的。但是以上代码总是返回false,原因是QSqlDatabase::open方法总是失败,返回的错误信息是未加载ODBC驱动。

求高人不吝指教,小弟先行谢谢了!






折中的解决办法:放弃静态库方式,采用动态库
离线dbzhang800

只看该作者 1楼 发表于: 2013-04-17
引用楼主yanzhuliang于2013-04-17 14:58发表的 [求助]ODBC方式处理Excel文件 :
[图片]
我用的Qt版本是4.8.4,自己编译的静态库(configure -opensource -debug-and-release -fast -static -platform win32-msvc2010 -no-qt3support -qt-sql-sqlite -plugin-sql-sqlite -qt-sql-odbc -plugin-sql-odbc -nomake demos -nomake examples -nomake docs)。把\plugins\sqldrivers下的qsqlodbc.lib已经拷贝到工程目录,并正确配置了工程属性。本地的ODBC驱动都是正常的。但是以上代码总是返回false,原因是QSqlDatabase::open方法总是失败,返回的错误信息是未加载ODBC驱动。
求高人不吝指教,小弟先行谢谢了!
.......

1. 你需要拷贝不是 .lib,而是.dll

2. 你不能将其直接放到工程目录,它必须位于 sqldrivers 目录下!

3. 这属于发布问题,本论坛有专门板块
离线yanzhuliang

只看该作者 2楼 发表于: 2013-04-17
回 1楼(dbzhang800) 的帖子
1. 你需要拷贝不是 .lib,而是.dll
我用的是静态库,不需要动态库

2. 你不能将其直接放到工程目录,它必须位于 sqldrivers 目录下!
目录放置的是正确的,在vs2010\lib\x86\sqldrivers下
离线dbzhang800

只看该作者 3楼 发表于: 2013-04-17
额,没注意到是静态编译。

没用过静态编译,不过试图发布 .lib 肯定是不对的。你只能直接将其链接到你的程序中。
离线yanzhuliang

只看该作者 4楼 发表于: 2013-04-17
回 3楼(dbzhang800) 的帖子
嗯,还是非常感谢您!
离线yanzhuliang

只看该作者 5楼 发表于: 2013-04-18
跪求“曾经遇到这个问题并解决了”的大神赐教
离线dbzhang800

只看该作者 6楼 发表于: 2013-04-18
引用第5楼yanzhuliang于2013-04-18 08:41发表的  :
跪求“曾经遇到这个问题并解决了”的大神赐教



使用静态编译的应该绝大多数都是商业版用户,所以遇到这种问题的应该不多。

不过,多看看 Manual,问题还是可以自己解决的:
http://qt-project.org/doc/qt-5.0/qtcore/plugins-howto.html

离线yanzhuliang

只看该作者 7楼 发表于: 2013-04-18
回 6楼(dbzhang800) 的帖子
嗯,谢谢。

暂时解决了,解决方法如下:
1.放弃静态库方式,采用动态库
离线yanzhuliang

只看该作者 8楼 发表于: 2013-04-18
不过仍然没有从根本上解决静态库方式connect database 失败的问题。不知道是不是qt自身的问题?
快速回复
限100 字节
 
上一个 下一个