• 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/


  • 相关阅读:
    转:windows通过VNC访问远程ubuntu14.04 【 server】服务器
    【转】研究了代码质量后,开发速度提高了2倍,bug减少了15倍
    【转】PuTTY的ppk密钥与OpenSSH密钥之间的相互转换
    【转】outlook配置腾讯企业邮箱(腾讯企业邮箱imap服务器地址)
    【转】YApi结合swag管理和生成go项目restful API文档
    [转] 超高效!SwaggerYapi的秘密
    【转】SSH 远程登录很慢的解决方法
    [转]go语言io reader_如何从io.Reader 中读数据
    eslint 支持多个三目表达式
    33
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835177.html
Copyright © 2020-2023  润新知