⑴ 如何在Windows平台使用VS搭建C++/Lua的开发环境
1.生成Lua静态库
(1)下载lua src。
最新版本是5.2.3。 下载地址。
(2)新建VS Win32控制台应用程序,取名为Lua。在应用程序设置中选择应用程序类型为静态库,附加选项中取消预编译头的勾选。
(3)在Lua的VS项目文件夹中新建LuaSrc目录,用于存放Lua源码。解压下载的lua src,拷贝src目录下所有 * .c和 * .h文件到LuaSrc。
(4)在Lua的VS项目文件夹中新建bin目录,用于存放Lua.lib。
(5)在VS环境中,右键点击Lua项目,选择添加->现有项,导入LuaSrc目录下所有的文件。
(6)右键点击Lua项目,选择属性,在顶部选择所有配置,然后修改配置属性->常规->输出目录为
$(SolutionDir)bin
(7)为了禁止一些安全警告(Windows程序员知道为什么),需要再修改配置属性->C/C++–>预处理器->预处理器定义,在末尾添加
;_CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE
(8)选择release模式,点击项目,生成Lua.lib即可。Lua.lib生成在bin目录下。
2.调用Lua静态库
(1)在Lua解决方案下新建名字为HelloLua的Win32控制台程序,采用默认选项,不做修改。
(2)右键点击HelloLua项目,选择属性,修改配置属性->C/C++–>附加包含目录,新增
..\LuaSrc
(3)在修改配置属性->链接器->输入->附加依赖项,新增
..\bin\Lua.lib
或者使用代码链接lua库,即在HeloLua.cpp中添加如下代码,
#pragma comment (lib,"../bin/Lua.lib")
(4)设置HelloLua项目为默认启动项,点击生成项目即可。
(5)因为此时main函数并没有执行任何代码,所以控制台一闪而过。右键HelloLua项目的源文件,添加新建项,取名hellolua.lua。
⑵ 如何将lua编译成动态库
我只知道怎么编译静态库,新建空的静态库项目,把LUA的文件统统丢进去编译就好了,动态库貌似是设置预编译选项,没试过,动态库我只编译过LUAJIT,那个已经有一个批处理,使用VS的命令行就能简单完成
⑶ LUA到底什么作用
LUA是脚本, 就像你在html里嵌入 javascript一样, 帮你完成部分工作, 比如javascript可以实现一些网页特效
lua本来就吧是解决大问题的, 它小而强大
单纯学习lua我觉的没啥意思, 关键是要应用(嵌入)到你的项目里, 让你的软件更灵活,易于扩展
个人见解, 共同学习
⑷ lua解析luac 会还原为明文脚本吗
不会,luac 是把纯文本脚本 转换成 lua虚拟机字节码。脚本的在内存中实际运行就是字节码。luac预编译可加快脚本初次加载。
从 luac 到 明文 实际上是 反编译。lua运行时并不进行反编译。
⑸ 手机上怎么打开运行别人发过来的lua脚本文件(软件)
首先你的手机要支持这个文件,GG是自带解密的,GG解不了,就手解mt就可以写脚本,也有脚本模板。然后找到这个程序,把这个文件打开就可以了。首先你的手机要支持这个文件,GG是自带解密的,GG解不了,就手解mt就可以写脚本,也有脚本模板。然后找到这个程序,把这个文件打开就可以了。首先你的手机要支持这个文件,GG是自带解密的,GG解不了,就手解mt就可以写脚本,也有脚本模板。然后找到这个程序,把这个文件打开就可以了。
⑹ 如何在vs2015中编写调试lua
每次重新创建项目选择win32窗口应用程序并勾选预编译头,然后再项目cpp中加入:
#include<iostream>
#include<lua.hpp>
using namespace std;
在main函数中添加:
lua_State *l = luaL_newstate();
luaL_openlibs(l);
luaL_dofile(l, "main.lua"); //lua文件路径
lua_close(l);
system("pause");
⑺ 程序开发中各类有用的函数方法都有哪些
常用的函数方法有很多,比如字符串函数,时间函数,文件函数,下面是列举的常用方法。
以保护模式调用一个函数。
nargs 和 nresults 的含义与 lu a_call 中的相同。 如果在调用过程中没有发生错误, l ua_pcall 的行为和 l ua_call 完全一致。 但是,如果有错误发生的话, lu a_pcall 会捕获它, 然后把唯一的值(错误消息)压栈,然后返回错误码。 同 lu a_call 一样, l ua_pcall 总是把函数本身和它的参数从栈上移除。
如果 msgh 是 0 , 返回在栈顶的错误消息就和原始错误消息完全一致。 否则, msgh 就被当成是 错误处理函数 在栈上的索引位置。 (在当前的实现里,这个索引不能是伪索引。) 在发生运行时错误时, 这个函数会被调用而参数就是错误消息。 错误处理函数的返回值将被 lu a_pcall 作为错误消息返回在堆栈上。
典型的用法中,错误处理函数被用来给错误消息加上更多的调试信息, 比如栈跟踪信息。 这些信息在 lua_pcall 返回后, 由于栈已经展开,所以收集不到了。
lu a_pcall 函数会返回下列常数 (定义在 lu a.h 内)中的一个:
LUA_OK (0): 成功。
LUA_ERRRUN: 运行时错误。
LUA_ERRMEM: 内存分配错误。对于这种错,Lua 不会调用错误处理函数。
LUA_ERRERR: 在运行错误处理函数时发生的错误。
LUA_ERRGCMM: 在运行 __gc 元方法时发生的错误。 (这个错误和被调用的函数无关。)
lu a_pcallk
这个函数的行为和 lua_pcall 完全一致,只不过它还允许被调用的函数让出 )。
lu a_pop
[-n, +0, –]
void lu a_pop (lua_State *L, int n);
从栈中弹出 n 个元素。
lua_pushboolean
[-0, +1, –]
void l ua_pushboolean (lua_State *L, int b);
把 b 作为一个布尔量压栈。
lua_pushcclosure
[-n, +1, e]
void l ua_pushcclosure (lu a_State *L, lua_CFunction fn, int n);
把一个新的 C 闭包压栈。
当创建了一个 C 函数后, 你可以给它关联一些值, 这就是在创建一个 C 闭包(); 接下来无论函数何时被调用,这些值都可以被这个函数访问到。 为了将一些值关联到一个 C 函数上, 首先这些值需要先被压入堆栈(如果有多个值,第一个先压)。 接下来调用 lua_pushcclosure 来创建出闭包并把这个 C 函数压到栈上。 参数 n 告之函数有多少个值需要关联到函数上。 lua_pushcclosure 也会把这些值从栈上弹出。
n 的最大值是 255 。
当 n 为零时, 这个函数将创建出一个 轻量 C 函数, 它就是一个指向 C 函数的指针。 这种情况下,不可能抛出内存错误。
lua_pushcfunction
[-0, +1, –]
void lua_pushcfunction (lua_State *L, lua_CFunction f);
将一个 C 函数压栈。 这个函数接收一个 C 函数指针, 并将一个类型为 function 的 Lua 值压栈。 当这个栈顶的值被调用时,将触发对应的 C 函数。
注册到 Lua 中的任何函数都必须遵循正确的协议来接收参数和返回值 (lua_CFunction )。
⑻ 新人求助.unity3d能不能用lua来写代码
它只用来做了配置解析……
C#下的Lua效率很低…大概是C的1/100…不适合做主逻辑