从官网下载Lua5.4.7的源代码,解压后,所有源码在src目录下。按lua文档的描述,这里有3个项目,对应lib,解析器和编译器,使用visual studio编译这3个项目。这里分为三步,先是新建这三个项目,然后添加源码到项目,再设置3个项目属性依赖。
1. 创建第一个新的C++空项目,构建解析器,这里命名为lua。设想的是一个解决方案,挂三个项目。因此这里取消勾选解决方案和项目在同一目录中
2. 右键解决方案,添加新建项目到解决方案。把运行库liblua,还有编译器luac也添加到解决方案中去。
1. 这里先拷贝了源码src目录到解决方案目录下,也可以不用拷贝
2. 为liblua项目添加src目录下除去lua.c和luac.c的所有文件
3. 同上,为lua项目添加lua.c文件,luac项目添加luac.c文件
为lua和luac项目添加liblua引用
2. 右键liblua项目,打开属性页,设置相关参数。这里有两套方案,一个是走静态库lib,另一个是设为动态库dll。
方案1:静态库lib设置,设置类型为dll,以及编译为C代码,然后编译生成就可以看到生成的文件了。
方案2:动态库dll设置
1. 设置类型为dll
2. 添加宏LUA_BUILD_AS_DLL。
3. 设置编译为C代码
4. 这时编译,发现dll和lua解析器都可以正常生成。但编译器出现了两个链接错误,找不到luaG_getfuncline和luaU_dump函数。
以luaG_getfuncline为例,找到函数声明。发现它声明为LUAI_FUNC,这个宏实际定义为extern,并没有导出。简单把它改成LUA_API,LUA_API定义为__declspec(dllexport)。
同样修改luaU_dump的声明,然后可以正常生成了。