您现在的位置是:首页 >技术杂谈 >VIsual Studio内引用Lua解释器,编译Lua源码,执行Lua脚本网站首页技术杂谈
VIsual Studio内引用Lua解释器,编译Lua源码,执行Lua脚本
本篇在讲什么 在Visual Studio中引入lua的解释器 使用C++调用Lua文件 本篇适合什么 适合初学Lua的小白 适合需要C/C++和lua结合开发的人 本篇需要什么 对Lua语法有简单认知 对C/C++语法有简单认知 依赖Lua5.1的环境 依赖VS 2017编辑器 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 |
★提高阅读体验★ ? ♠ 一级标题 ?? ♥ 二级标题 ?? ♣ 三级标题 ?? ♦ 四级标题 ? |
目录
♠ 引入本地Lua环境
如果你的电脑已经安装了Lua,那么有现成的Lua解释器可以引入,这个方案必须是你本地环境已经安装好lua的情况下才可以使用
♥ 确认本地是否存在环境
打开cmd,输入Lua,如果有版本输出,就已经安装了Lua
♥ 找到Lua安装目录
如果忘记路径了,可以在环境变量内找到Lua的路径
♥ 描述文件和lib库
- include:下包含几个重要的头文件
- lib:编译好的lua源码库
♥ 新建C++空项目
我们通过Visual Studio创建一个C++的空项目
注:
需要安装c++桌面开发的相关环境才行
♥ 引入头文件和库
第一步右键解决方案下的目录,打开属性页
第二步在C/C++
下找到常规
,在附加包含目录
内添加上我们刚才lua下的include文件夹目录
第三步,在连接器
的输入
选项下,在附加依赖项
填入lib文件夹里lua5.1.lib的名字
第四步,在链接器
的常规
选项下,在附加库目录
内补充lib文件的目录
♥ 测试用例
我们在项目目录下准备一个lua文件,并带上简单输出
在C++代码内引用相关环境,并加载lua文件
注:
lua.hpp文件在include目录下,实际代码如下
执行调试器,成功输出lua文件内容
♠ 引外部下载的Lua环境
如果本地没有安装lua环境,或者想用指定的lua版本,可以从官网直接下载现成的头文件和库
♥ 下载文件
进入lua官网下载页, 选择binaries
选项
http://www.lua.org/download.html
在历史中选择自己想要的版本
根据平台版本选择下载文件
下载解压后就是下图所示的样子了,目录下有lib库,include文件下就是头文件
♥ 引入文件
承接上文创建C++空项目之后,我们直接在目录下创建两个文件,分别是include和lib文件
然后吧刚才下载目录内的库放到lib文件夹,include下的头文件的都放到工程目录的include目录下
接下来就和上文当中引入头文件和库的步骤一样了,在属性页补充名称和目录,这里因为直接在项目目录下,所以用了相对路径
♠ 编译Lua源码后引入
上述方案都是直接引入已经编译好的lua解释器,还有一种方案是从官网下载lua对应版本的源码,然后自己编译,这样做的好处是可以在源码的基础上去拓展lua的功能
♥ 下载Lua源码
同样的再Lua官网下载页,选择download
选项
选择对应的版本下载后解压
解压目录如下
♥ 创建静态库项目
在VS中创建一个C++的静态库
项目,命名为lua5.1
删除自动创建的文件
♥ 拷贝源码
拷贝源码src目录到项目目录下
右键解决方案内的项目,选择添加现有项,将src目录所有的.h和.c文件添加到项目内
♥ 不使用预编译头
右键解决方案内的项目,属性页内的C/C++下的预编译头
,改为不使用预编译头
♥ 注释main方法
将lua.c
和luac.c
中的main
方法注释掉, 我们不需要它有自己的执行入口
♥ 添加预处理器定义标记
右键解决方案内的项目,属性页内的C/C++下的预处理器
,添加_CRT_SECURE_NO_DEPRECATE
标记,不然生成的时候会报错
♥ 生成编译文件
右键解决方案内的项目,选择生成
,在输出栏内可以看到生成成功的输出,至此我们自己生成编译文件的操作已经结束了
♥ 整合编译文件
回到我们静态库的工程目录下,进入到Debug目录内,找到lua5.1.lib
文件,这个生成文件就是上文我们引用的库
注:
这个lib文件名字跟我们的静态库项目名字相同,这里静态库我是用了和官方一样的名字,所以生成出来和下载文件一致
在源码的src目录下,被选中的四个头文件,和我们之前include目录下的文件相同
找到这几个文件,剩下的操作步骤就和之前一样了
♠ 推送
- Github
https://github.com/KingSun5
♠ 结语
若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。