код связан с этим вопросом здесь: https://github.com/jchester/lua-polarssl/tree/master/srcОбтекание библиотеки C для Lua: как создать вложенные таблицы функций?
В настоящее время я пытаюсь обернуть одну часть библиотеки PolarSSL (http://polarssl.org), чтобы дать мне доступ к SHA-512 HMACs (luacrypto делает не предоставляйте это).
API-интерфейс я и добиваюсь имеет вид:
a_sha512_hash = polarssl.hash.sha512('text')
или более полно
local polarssl = require 'polarssl'
local hash = polarssl.hash
a_sha512_hash = hash.sha512('test')
Если вы ссылаетесь polarssl.c в ссылке выше, вы увидите I 'написанные функции, которые завершают код PolarSSL. Тогда я пытаюсь построить таблицы функций таким образом:
LUA_API int luaopen_polarssl(lua_State *L) {
static const struct luaL_Reg core[] = {
{ NULL, NULL }
};
static const struct luaL_Reg hash_functions[] = {
{ "sha512", hash_sha512 },
{ "sha384", hash_sha384 },
{ NULL, NULL }
};
static const struct luaL_Reg hmac_functions[] = {
{ "sha512", hmac_sha512 },
{ "sha384", hmac_sha384 },
{ NULL, NULL }
};
luaL_register(L, CORE_MOD_NAME, core);
luaL_register(L, HASH_MOD_NAME, hash_functions);
luaL_register(L, HMAC_MOD_NAME, hmac_functions);
return 1;
}
Где CORE_MOD_NAME = 'polarssl', HASH_MOD_NAME = 'polarssl.hash', HMAC_MOD_NAME = 'polarssl.hmac.
Когда я запускаю тестовый скрипт, похожий на код Lua в верхней части этого вопроса, я получаю это:
lua: test.lua:23: attempt to index global 'polarssl' (a nil value)
stack traceback:
test.lua:23: in main chunk
[C]: ?
Я попытался ищу примеры того, как достичь этого module.submodule подхода (например, naim против luasockets), но у всех, кажется, есть другой способ его достижения. Я полностью потерян.
Я не могу ссылаться на naim и luasockets, потому что я нажимаю <10-точечный лимит на ссылки. –
Похож, что карма раздается как восхитительные лотосы, поэтому обновленная почта со ссылками. –