本文讲述两种 lua 源码编译方式,命令行编译与 VS 编译,以当前最新的 lua-5.3.5 为例,开始编译前请下载并安装 VS2015。
下载 lua 源码
下载地址
命令行编译
解压 lua 源码
在根目录创建批处理文件 msvc_build.bat
打开文件,写入以下命令:
@echo off
md bin
md lib
md include
cd src
cl /c /nologo /W3 /O2 /Ob1 /Oi /Gs /MD /D_CRT_SECURE_NO_DEPRECATE l*.c
ren lua.obj lua.o
ren luac.obj luac.o
lib /OUT:lua53.lib *.obj
copy lua53.lib ..\lib\lua53.lib
del *.o *.obj *.exp *.lib *.dll *.exe
cl /c /nologo /W3 /O2 /Ob1 /Oi /Gs /MD /D_CRT_SECURE_NO_DEPRECATE /DLUA_BUILD_AS_DLL l*.c
ren lua.obj lua.o
ren luac.obj luac.o
link /DLL /IMPLIB:lua53.lib /OUT:lua53.dll *.obj
link /OUT:lua53.exe lua.o lua53.lib
link /OUT:luac53.exe luac.o *.obj
copy lua53.exp ..\bin\lua53.exp
copy lua53.lib ..\bin\lua53.lib
copy lua53.dll ..\bin\lua53.dll
copy lua53.exe ..\bin\lua53.exe
copy luac53.exe ..\bin\luac53.exe
del *.o *.obj *.exp *.lib *.dll *.exe
copy lauxlib.h ..\include\lauxlib.h
copy lua.h ..\include\lua.h
copy lua.hpp ..\include\lua.hpp
copy luaconf.h ..\include\luaconf.h
copy lualib.h ..\include\lualib.h
cd ..\
打开:开始 -> Visual Studio 2015 -> VS2015 开发人员命令提示,cd 到 lua 源码根目录
运行 msvc_build.bat,等待编译结果,结果如下:
使用 VS2015 编译
创建空项目 lua53,将 lua.c 添加进该项目。
在 解决方案'lua53' 下添加新的 Win 32 项目 luadll:在引导弹窗中选择下一步,应用程序类型选择 DLL,附加选项选择空项目,点击完成,将 lua.c 与 luac.c 以外的文件全部添加进该项目。
给 lua53 项目添加引用,方法如图所示:
给 lua53 项目附加添加包含目录为 luadll 头文件所在目录,方法如图所示:
将 luadll 输出文件名改为 lua53,方法如图所示:
给 luadll 添加预处理器定义 LUA_BUILD_AS_DLL ,方法如图所示:
在解决方案'lua53'下添加新的空项目 luac53,将 lua.c 以外的文件全部添加进该项目。
分别选择 lua53 luac53 ,右键生成项目。
生成结果如下:
遇到的问题及解决方案
luadll 编译时未生成 .lib 文件,解决方法:添加预处理器定义 LUA_BUILD_AS_DLL,原因见 luaconf.h:
/*
@@ LUA_API is a mark for all core API functions.
@@ LUALIB_API is a mark for all auxiliary library functions.
@@ LUAMOD_API is a mark for all standard library opening functions.
** CHANGE them if you need to define those functions in some special way.
** For instance, if you want to create one Windows DLL with the core and
** the libraries, you may want to use the following definition (define
** LUA_BUILD_AS_DLL to get it).
*/
#if defined(LUA_BUILD_AS_DLL) /* { */
#if defined(LUA_CORE) || defined(LUA_LIB) /* { */
#define LUA_API __declspec(dllexport)
#else /* }{ */
#define LUA_API __declspec(dllimport)
#endif /* } */
#else /* }{ */
#define LUA_API extern
#endif /* } */
luac53 不能以动态链接库的方式进行编译,这是因为有一些核心函数并未进行导出。
本文项目工程链接
lua53 VS2015项目
请将项目中的绝对路径换成你自己的路径
参考链接
为Lua5.3编写C模块简单示例
分类: Lua
好文要顶 关注我 收藏该文
zhouzl
关注 - 0
粉丝 - 1
+加关注
0 0
« 上一篇:VS2015安装Unity插件后打开项目报错
posted @ 2018-08-27 23:47 zhouzl 阅读(68) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。
【推荐】超50万VC++源码: 大型组态工控、电力仿真CAD与GIS源码库!
【推荐】企业SaaS应用开发实战,快速构建企业运营/运维系统
【推荐】ActiveReports 报表控件,全面满足 .NET开发需求
qcloud0814
最新IT新闻:
· 哔哩哔哩二季度净亏1060万美元 同比亏损幅度扩大
· EMS时隔五年重启IPO 上市地点或首选A股
· 中国正建造价值10亿超导计算机 港媒:或改变世界
· 35分钟充满3400毫安电池 OPPO超级闪充如何从0到1?
· 丰田以720亿美元估值给Uber投资5亿美元
» 更多新闻...
华为CH0822
最新知识库文章:
· 如何招到一个靠谱的程序员
· 一个故事看懂“区块链”
· 被踢出去的用户
· 成为一个有目标的学习者
· 历史转折中的“杭派工程师”
» 更多知识库文章...
公告
昵称:zhouzl
园龄:2年8个月
粉丝:1
关注:0
+加关注
< 2018年8月 >
日 一 二 三 四 五 六
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
随笔分类
Java(1)
Lua(1)
Unity(1)
操作系统
汇编
文学
随笔档案
2018年8月 (2)
2018年7月 (1)
阅读排行榜
1. Windows 环境编译 Lua5.3(69)
2. Eclipse JNI环境搭建及使用(40)
3. VS2015安装Unity插件后打开项目报错https://www.cnblogs.com/zhouzl/p/9545514.html