使用Luadist将Lua源代码转换为可执行文件
2017-10-25 13:44:13
收藏:0
阅读:103
评论:1
根据这个页面 https://github.com/LuaDist/Repository/wiki/Example:-Lua-module ,可以通过Luadist从Lua源文件创建可执行文件。但是,我不清楚如何操作。我有一个包含IUP GUI代码的Lua源文件(名为abcd.lua),可以使用iuplua.exe运行。我该如何将它转换为可执行文件?从上述页面中看来,我需要创建一个文件,如下所示:
project ( abelhas NONE )
cmake_minimum_required ( VERSION 2.8 )
include ( cmake/dist.cmake )
include ( lua )
install_lua_executable ( abcd abcd.lua )
我相信我必须将上述文件命名为CMakeLists.txt,然后在包含此文件和abcd.lua文件的文件夹中运行cmake命令。这正确吗?我可以使用cmake-gui(cmake-qt-gui)进行此操作吗?cmake是Luadist的一部分还是我需要单独安装它?我在Luadist文件夹中找不到任何dist.cmake文件,虽然有一个cmake.lua文件。我将感激您对此过程的任何解释,因为我以前从未使用过cmake。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我一直在使用
xxd.lua将我的 lua 脚本嵌入到C++和C项目中。xxd.lua会生成一个C文件,其中包含给定文件的十六进制转储作为无符号字符数组。然后将C文件编译到程序中。EmbLuaFiles.cmake:file(DOWNLOAD https://github.com/gittup/tup/blob/master/src/luabuiltin/xxd.lua "${CMAKE_SOURCE_DIR}/Path/To/Store/File/At" SHOW_PROGRESS EXPECTED_HASH hash_value) macro(EmbedLuaFiles lua depends) add_custom_command(OUTPUT LuaScriptBinding.c COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_SOURCE_DIR}/DevelopmentTools/xxd.lua" "${CMAKE_BINARY_DIR}" COMMAND ${lua} xxd.lua LuaScript.lua LuaScriptBinding.c DEPENDS ${depends} WORKING_DIRECTORY "${CMAKE_BINARY_DIR}") endmacro()在
CMakeLists.txt中:include(EmbedLuaFiles) add_custom_command(OUTPUT lua.exe COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}/lua-build" COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_BINARY_DIR}/lua-build/lua.exe" "${CMAKE_BINARY_DIR}" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/lua-src" ) set(LUA_C_FILES LuaScriptBinding.c) EmbedLuaFiles(lua.exe "${CMAKE_BINARY_DIR}/lua.exe") set(LUA_EXE lua.exe ${LUA_C_FILES}) add_executable(TargetProject ${SOURCE_FILES} ${LUA_EXE})在
C / C++中,可以使用以下方法访问这些内容:#if DEBUG #define LUA_SCRIPT "LuaScript.lua" #define LUA_SCRIPT_LEN 0 #else extern "C" { extern unsigned char LuaScript_lua[]; extern unsigned int LUA_SCRIPT_LEN; }; #define LUA_SCRIPT (char*)LuaScript_lua #define LUA_SCRIPT_LEN LUA_SCRIPT_LEN #endif void loadFile(lua_state *luaState, const char *luaFile, size_t len) { #if !DEBUG if(luaL_loadbuffer(luaState, luaFile, len, luaFile)) #else if(luaL_loadfile(luaState, luaFile) != 0) #endif cerr << "Failed to load lua file" << endl; } int main() { luaState = LuaL_newstate(); luaL_openlibs(luaState); loadFile(luaState, LUA_SCRIPT, LUA_SCRIPT_LEN); lua_call(luaState, 0, 0); // run the script lua_close(luaState); }如果您运行的是病毒保护程序,则需要确保将运行
xxd.lua的目录标识为豁免,否则将不会生成c文件。