首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite注册VFS会导致分割错误

SQLite注册VFS会导致分割错误
EN

Stack Overflow用户
提问于 2017-03-22 23:37:22
回答 1查看 181关注 0票数 0

我试图在SQLite中注册一个SQLite:

代码语言:javascript
复制
#include <iostream>
#include "sqlite3.h"

int vfs_open(sqlite3_vfs* vfs, const char *zName, sqlite3_file* file, int flags, int *pOutFlags)
{

  std::cout << "Hello open";
  return SQLITE_OK;
}
int vfs_access(sqlite3_vfs* vfs, const char *zName, int flags, int *pResOut)
{
  std::cout << "Hello access";
  return 0;
}

int main () {
  static sqlite3_vfs vfs;
  vfs.iVersion = 1;
  vfs.szOsFile = 1000;
  vfs.zName = "foo";
  vfs.xOpen = vfs_open;
  vfs.xAccess = vfs_access;

  sqlite3_vfs_register(&vfs, 0);

  sqlite3 *db;
  sqlite3_open_v2("db.db", &db, SQLITE_OPEN_READONLY, "foo");
}

但是,当我运行这段代码时,我得到了分段错误:

代码语言:javascript
复制
$ g++ test.cc libsqlite3.dylib 
$ ./a.out
Segmentation fault: 11

我做错了什么有帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-23 22:49:54

sqlite3_vfs结构有很多函数的指针。我找不到任何关于您必须定义的最小函数集的文档,所以假设它们都是必需的,即使是存根函数,也可能更安全。

在您的例子中,我猜sqlite正在调用您尚未定义的函数之一(可能是xFullPathname),从而试图以空运行函数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42964641

复制
相关文章

相似问题

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