我有了它必須代表一個Lua模塊串一個小C程序,它看起來像這樣:Ç - LuaJit指定自定義模塊的名稱爲編譯字符串
const char *lua_str = " local mymodule = {} \
function mymodule.foo() \
print(\"Hello World!\") \
end
return mymodule";
或許用老辦法( 如果需要):
const char *lua_str = "module(\"mymodule\", package.seeall \
function foo() \
print(\"Hello World!\") \
end";
而且我們認爲這是我的小主機應用程序:
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main(int argc, char** argv)
{
lua_State *L = lua_open();
luaL_openlibs(L);
luaL_dostring(L, lua_str);
luaL_dofile(L, "test.lua");
return 0;
}
現在test.lua能夠使用的模塊,具有靜態名未通過文件名決定:
local mymodule = require "mymodule"
mymodule.foo()
基本上,我需要執行該字符串,並給它一個代表實際模塊名稱的自定義名稱。目前這個名字是由文件名決定的,我不想那樣。
所以基本上所有我需要做的就是把我的表放在我的模塊名稱下'package.loaded [「mymodule」] = {}'。或者只需放置一個函數,當模塊首次被需要時返回實際的表格'package.preload [「mymodule」] = function(mod)return {} end'。這是否是一個正確的方法? – 2014-09-05 02:37:58
最簡單的方法是加載第一個沒有運行的例子,然後將它存儲在'package.preload'中。 – 2014-09-05 02:58:37