沙龙会S36备用开户沙龙会S36备用开户


沙龙会S36备用注册

Windows 环境编译 Lua5.3

本文讲述两种 lua 源码编译方式,命令行编译与 VS 编译,以当前最新的 lua-5.3.5 为例,开始编译前请下载并安装 VS2015。

下载 lua 源码

下载地址

命令行编译

解压 lua 源码

在根目录创建批处理文件 msvc_build.bat

打开文件,写入以下命令:

@echo offmd binmd libmd includecd srccl /c /nologo /W3 /O2 /Ob1 /Oi /Gs /MD /D_CRT_SECURE_NO_DEPRECATE l*.cren lua.obj lua.oren luac.obj luac.olib /OUT:lua53.lib *.objcopy lua53.lib ..liblua53.libdel *.o *.obj *.exp *.lib *.dll *.execl /c /nologo /W3 /O2 /Ob1 /Oi /Gs /MD /D_CRT_SECURE_NO_DEPRECATE /DLUA_BUILD_AS_DLL l*.cren lua.obj lua.oren luac.obj luac.olink /DLL /IMPLIB:lua53.lib /OUT:lua53.dll *.objlink /OUT:lua53.exe lua.o lua53.liblink /OUT:luac53.exe luac.o *.objcopy lua53.exp ..inlua53.expcopy lua53.lib ..inlua53.libcopy lua53.dll ..inlua53.dllcopy lua53.exe ..inlua53.execopy luac53.exe ..inluac53.exedel *.o *.obj *.exp *.lib *.dll *.execopy lauxlib.h ..includelauxlib.hcopy lua.h ..includelua.hcopy lua.hpp ..includelua.hppcopy luaconf.h ..includeluaconf.hcopy lualib.h ..includelualib.hcd ..

打开:开始 -> Visual Studio 2015 -> VS2015 开发人员命令提示,cd 到 lua 源码根目录

运行 msvc_build.bat,等待编译结果,结果如下:

使用 VS2015 编译

创建空项目 lua53,将 lua.c 添加进该项目。

解决方案"lua53" 下添加新的 Win 32 项目 luadll:在引导弹窗中选择下一步,应用程序类型选择 DLL,附加选项选择空项目,点击完成,将 lua.cluac.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模块简单示例

欢迎阅读本文章: 刘佳

sa36国际沙龙官网

沙龙会S36备用注册