sqlite3 extension-function windows 编译调用

extension-function.c本身不支持windows下编译,如果在windows下编译,需要对官方文件进行修改

 

1. 修改extension-function.

将官方文件的(1837行)

#ifdef COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE
int sqlite3_extension_init(
    sqlite3 *db, char **pzErrMsg, const sqlite3_api_routines *pApi){
  SQLITE_EXTENSION_INIT2(pApi);
  RegisterExtensionFunctions(db);
  return 0;
}
#endif /* COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE */

替换为

#ifdef COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE
#ifdef _WIN32
__declspec(dllexport)
#endif
int sqlite3_extension_init(
    sqlite3 *db, char **pzErrMsg, const sqlite3_api_routines *pApi){
  SQLITE_EXTENSION_INIT2(pApi);
  RegisterExtensionFunctions(db);
  return 0;
}
#endif /* COMPILE_SQLITE_EXTENSIONS_AS_LOADABLE_MODULE */

 

2.编译dll
使用visual studio 32位本机命令行工具执行 cl extension-functions.c -link -dll -out:sqlite3_ext_func32.dll

使用visual studio 64位本机命令行工具执行 cl extension-functions.c -link -dll -out:sqlite3_ext_func64.dll

3.调用
//打开数据库
sqlite3 *db;
sqlite3_open("xxx", &db);
//允许sqlite加载扩展
sqlite3_db_config(db, SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION , 1, NULL);
//加载扩展
int ret = sqlite3_load_extension(db, "sqlite3_ext_func64.dll", 0, 0);
if (ret != SQLITE_OK)
  OutputDebugString(_T("sqlite3_load_extension:sqlite3_ext_func64.dll fail!\n"));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值