首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQLite 64位库在sqlite3_prepare_v2失败时崩溃

SQLite 64位库在sqlite3_prepare_v2失败时崩溃
EN

Stack Overflow用户
提问于 2010-08-21 15:46:11
回答 1查看 1.3K关注 0票数 0

我正在从命令行为一个简单的SQLite包装器编译一个32位和64位的C++库。32位版本工作正常,但当sqlite3_prepare_v2返回SQLITE_OK以外的任何内容时,64位版本就会完全崩溃。

build.bat

代码语言:javascript
运行
复制
set ARGS=/nologo /LD /DSQLITE_ENABLE_COLUMN_METADATA sqlite3.c /link /def:sqlite3.def

call vcvars32.bat
cl %ARGS% /out:sqlite3.dll

call vcvars64.bat
cl %ARGS% /out:sqlite3_64.dll

C#代码(相关位)

代码语言:javascript
运行
复制
public delegate int _sqlite3_prepare_v2(IntPtr db, string zSql, int nByte, out IntPtr ppStmt, out IntPtr pzTail);

public static readonly _sqlite3_prepare_v2 sqlite3_prepare_v2;

IntPtr tail;
if (SQLite.sqlite3_prepare_v2(_db.Handle, text, -1, out _handle, out tail) != SQLite.SQLITE_OK)
    throw new SQLiteException(_db);

这些函数在运行时被绑定,这样我就可以为任何CPU编译,并选择使用哪个版本的库。当我在64位系统上运行这个程序时,我得到了这样的信息:

代码语言:javascript
运行
复制
vshost-clr2.exe has stopped working
Problem signature:
  Problem Event Name:       APPCRASH
  Application Name:         SQLiteTest.vshost.exe
  Application Version:      10.0.30319.1
  Application Timestamp:    4ba2084b
  Fault Module Name:        StackHash_4a05
  Fault Module Version:     6.1.7600.16559
  Fault Module Timestamp:   4ba9b802
  Exception Code:           c0000374
  Exception Offset:         00000000000c6df2
  OS Version:               6.1.7600.2.0.0.256.48
  Locale ID:                1033
  Additional Information 1: 4a05
  Additional Information 2: 4a055724055f1d4270656b7cd547877a
  Additional Information 3: 92b7
  Additional Information 4: 92b737f393457f0de2d4edb6b32c0617

有什么想法吗?

编辑:调试应用程序时收到的消息是:

堆已损坏

EN

Stack Overflow用户

发布于 2010-08-21 15:49:16

SQLITE_MISUSE意味着您正在以不好的方式使用这个库。如果您可以在32位内更改代码以避免触发,我怀疑您的64位崩溃将会消失。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3538084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档