gpt4 book ai didi

C++ 和 Lua 与 SQLite

转载 作者:行者123 更新时间:2023-11-28 06:07:12 29 4
gpt4 key购买 nike

我有带 Lua 绑定(bind)的 C++。一切正常,但如果我添加 SQLite,我的脚本将停止工作(甚至只有一个 print 运行的空脚本也不行)。

在我的 C++ 代码中,我调用

luaL_openlibs( this->state );
luaopen_lsqlite3(this->state); /* sqlite */

如果我这样做,Lua 脚本将不再有效。

如果我删除(注释掉)luaopen_lsqlite3,脚本可以正常工作(但显然没有 SQLite)。怎么了?或者我需要调用什么?

我正在使用 http://lua.sqlite.org/index.cgi/index

最佳答案

我找到了一个解决方案,需要编辑 Lua 源文件。


lualib.h中添加

#define LUA_SQLLIBNAME  "lsqlite3"
LUAMOD_API int (luaopen_lsqlite3)(lua_State *L);

之前

LUALIB_API void (luaL_openlibs) (lua_State *L);

linit.h 中将此 {LUA_SQLLIBNAME, luaopen_lsqlite3 } 添加到 loadedlibs 数组。你得到了

static const luaL_Reg loadedlibs[] = {
{"_G", luaopen_base},
{LUA_LOADLIBNAME, luaopen_package},
{LUA_COLIBNAME, luaopen_coroutine},
{LUA_TABLIBNAME, luaopen_table},
{LUA_IOLIBNAME, luaopen_io},
{LUA_OSLIBNAME, luaopen_os},
{LUA_STRLIBNAME, luaopen_string},
{LUA_BITLIBNAME, luaopen_bit32},
{LUA_MATHLIBNAME, luaopen_math},
{LUA_DBLIBNAME, luaopen_debug},
{LUA_SQLLIBNAME, luaopen_lsqlite3 },
{NULL, NULL}
};

现在,如果您调用 luaL_openlibs,在 Lua 中调用 local sqlite3 = require("lsqlite3") 之后,SQLite 支持将出现在您的代码中

关于C++ 和 Lua 与 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32164398/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com