VS2010编译Lua程序

1、下载Lua源码 http://www.lua.org/download.html 最新版的5.2.1

a 下载后解压到一个目录下,这里假设解压到D:\lua-5.2.1
2、在VS2010中新建一个静态库项目,项目命名为CompileLua
a 选择新建 Win32 console project
b 在wizard界面选择 static Library;不选择Precomplied Header
3、往工程中添加代码 Add Existing Item,将所有头文件源文件(不包括luac.c、lua.c)加入project
4、 生产项目 Build
如果是debug mode 将在Debug目录下看到一个CompileLua.lib文件,Release mode的lib文件在Release文件下


测试:

后面添加一个项目尝试在C/C++代码中调用lua
1、在解决方案中添加一个 Win32 console project,项目名称命名为testlua,后面wizard界面中的选项无需修改
2、添加对头文件的include directory
 Configuration Properties -> C/C++-> General -> Additional Include Directories 
 添加D:\lua-5.2.1\src

3、源文件加入#pragma comment(lib,"lua.lib")或者

Configuration Properties -> Linker-> Input -> Additional Dependencies

加入CompileLua.lib

在项目的的在testlua.cpp文件中添加下面的代码

#include <stdio.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#include <luaconf.h>
#pragma comment(lib,"lua.lib")


int main(int argc, char* argv[])
{
	lua_State* L = luaL_newstate();
	luaL_openlibs(L);
	luaL_dofile(L, "test.lua");
	lua_close(L);

	return 0;
}

test.lua

function show()
	local index
	for index = 1,10,1 do
		print(index)
	end
end

show()

输出:




or:

http://www.pondoudou.com/?p=1717

Visual Studio 版本為 2012
作業系統版本為 Windows 7 64bits
Lua 版本為 Lua 5.3.2
編譯流程:
1、將下載到的 Lua 5.3.2 源始碼解壓縮
2、執行 Visual Studio 提供的 命令提示字元
Ex: 開始 -> 所有程式 -> Microsoft Visual Studio 2012 -> Visual Studio Tools -> VS2012 x86 Native Tools 命令提示字元。
3、將下面的程式儲存成 bat (批次檔),檔名可為 VS_Compile.bat。存放路徑為 Lua 5.3.2 源始碼解壓縮後的資料夾內的 src 資料夾。

@rem Script to build Lua under "Visual Studio .NET Command Prompt".
@rem Do not run from this directory; run it from the toplevel: etc\luavs.bat .
@rem It creates lua51.dll, lua51.lib, lua.exe, and luac.exe in src.
@rem (contributed by David Manura and Mike Pall)
 
@setlocal
@set MYCOMPILE=cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE
@set MYLINK=link /nologo
@set MYMT=mt /nologo
@set LUA_VERSION=5.3.2
@set OUT_FILE_NAME=lua
@set COMPILE_FILE_NAME=luac
 
cd src
%MYCOMPILE% /DLUA_BUILD_AS_DLL l*.c
 
del lua.obj luac.obj
%MYLINK% /DLL /out:%OUT_FILE_NAME%%LUA_VERSION%.dll l*.obj
 
if exist %OUT_FILE_NAME%.dll.manifest^
%MYMT% -manifest %OUT_FILE_NAME%%LUA_VERSION%.dll.manifest -outputresource:%OUT_FILE_NAME%%LUA_VERSION%.dll;2
 
%MYCOMPILE% /DLUA_BUILD_AS_DLL lua.c
 
%MYLINK% /out:%OUT_FILE_NAME%%LUA_VERSION%.exe lua.obj %OUT_FILE_NAME%%LUA_VERSION%.lib
 
if exist %OUT_FILE_NAME%%LUA_VERSION%.exe.manifest^
%MYMT% -manifest %OUT_FILE_NAME%%LUA_VERSION%.exe.manifest -outputresource:%OUT_FILE_NAME%%LUA_VERSION%.exe
 
%MYCOMPILE% l*.c 
 
del lua.obj linit.obj lbaselib.obj ldblib.obj liolib.obj lmathlib.obj^
loslib.obj ltablib.obj lstrlib.obj loadlib.obj
%MYLINK% /out:%COMPILE_FILE_NAME%%LUA_VERSION%.exe *.obj
 
if exist %COMPILE_FILE_NAME%%LUA_VERSION%.exe.manifest^
%MYMT% -manifest %COMPILE_FILE_NAME%%LUA_VERSION%.exe.manifest -outputresource:%COMPILE_FILE_NAME%%LUA_VERSION%.exe
 
del *.obj *.manifest
cd ..

OR

@setlocal
@set LUA_VERSION=5.3.2
@set OUT_FILE_NAME=lua
@set COMPILE_FILE_NAME=luac
 
cl /MD /O2 /c /DLUA_BUILD_AS_DLL *.c
ren lua.obj lua.o
ren luac.obj luac.o
link /DLL /IMPLIB:%OUT_FILE_NAME%%LUA_VERSION%.lib /OUT:%OUT_FILE_NAME%%LUA_VERSION%.dll *.obj 
link /OUT:%OUT_FILE_NAME%%LUA_VERSION%.exe lua.o %OUT_FILE_NAME%%LUA_VERSION%.lib 
lib /OUT:%OUT_FILE_NAME%%LUA_VERSION%-static.lib *.obj
link /OUT:%COMPILE_FILE_NAME%%LUA_VERSION%.exe luac.o %OUT_FILE_NAME%%LUA_VERSION%-static.lib
 
del *.obj *.o
4、執行前步驟的 VS_Compile.bat
5、即可以得到 lua*.dll、lua*.exe、luac*.exe

http://blog.spreendigital.de/2015/01/16/how-to-compile-lua-5-3-0-for-windows/


posted @ 2013-03-06 21:35  N3verL4nd  阅读(175)  评论(0编辑  收藏  举报