sqlite3_prepare_v2返回26错误码的解决

原创
小哥 2年前 (2023-05-24) 阅读数 31 #大杂烩

问题描述:

C++写了一个SQLite小工具32位的,在64位win7执行时出错

加工流程:

1 来Debug我有源代码,我怕谁

跟踪定位后sqlite3_prepare_v2()函数,返回错误代码为26.

通过查找26的定义是: #define SQLITE_NOTADB 26 / File opened that is not a database file /

这意味着没有承认db文件。

2 检查db文件

通过常用SQLite工具测试,其中db文件是完好的,能打开查数据。

3 这时, 以为它可能被程序使用sqlite3.dll库版本不正确,

这种情况经常发生在使用某些第三方库时,例如使用c++写mysql应用程序使用 cppconn,需要区分32位64位,也需要区分debug,release并且还要区分vs版本

因此,如果在发布程序时出现轻微错误,那将是一个陷阱。

经检查发现根本没有程序目录sqlite3.dll所以程序必须已加载到系统目录中dll,

通过流程查看工具,发现win7系统目录下的库:windows\syswow64\sqlite3.dll

所以我找到了一份工作32按位库文件sqlite3.dll将其放在程序目录中并再次执行OK了。

问题已经解决了,但还有一个我不明白的问题32如何加载位程序64位sqlite3.dll并且在启动过程中不会出错!?

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门