lua與c++的相互調用入門篇


    進入游戲行業,開始學習lua,lua腳本語言的優勢在於靈活,游戲行業應用相當廣泛,因為支持動態加載,所以是必不可少的存在。可以想想,如果死守C++不放,有一個bug,莫非修正bug后重啟服務器?這得浪費多少時間?

   好了,廢話少說,上流程。

    1:下載lua源碼:http://www.lua.org/ftp/

    2:建立控制台應用程序,選擇“靜態庫”,去掉“預編譯頭”選項

              

        3:將下載的lua源碼 添加到工程,如下圖

              

 

             4:選擇Release 模式

             5:為了防止4996錯誤,在“預處理器”中加入 “_CRT_SECURE_NO_WARNINGS”

              

              6:好了,編譯生成.

              

 

 

 

           源碼編譯工作到這里就結束了,進入第二步

         二:

            1:新建控制台應用程序,包含源碼目錄,為了方便以后應用,將lib文件改名“lua.lib",源碼文件放入單一文件夾;

             2:在工程屬性中"附加包含目錄“包含lua源碼目錄,博主這里放在C盤。

              

                3:"附加依賴項" 包含 lib,記得放置在當前工作目錄下,別忘記了。(提醒自學編程的同學)

                    

 

                三:開始最后一步,堆代碼啦。。

                 C++代碼如下:

                     

#include "stdafx.h"
#include <iostream>
extern "C"
{
#include <lua.h>
 #include <lualib.h>
 #include <lauxlib.h>
}

lua_State *L;


static int frist_lua(lua_State * L)
{   
  int num =lua_tonumber(L,1);
  std::cout<<num<<std::endl;
  lua_pushstring(L,"Hello Lua");
return 1;
}


int _tmain(int argc, _TCHAR* argv[])
{   
    L= luaL_newstate();   //注冊一個狀態機
    luaL_openlibs(L);    //加載lua庫
    
    lua_register(L,"frist_lua",frist_lua);
    luaL_dofile(L,"C:\\hellolua.lua");   //加載lua腳本
    lua_close(L);   //釋放虛擬機
    getchar();
    return 0;
}

    lua代碼:

     

local hello = frist_lua(1)
print(hello)

   運行結果:

     

 

 

 

 

   最后提醒下,真正的應用lua與c++交互 還有很多第三方插件,這里推介幾款:

     lua tinker(lua5.0開發出來的插件,據說是韓國人,隨着更新5.1還能用,5.2就不能用了網上流傳作者不知道去哪里了,好在廣大的程序猴們自己動手豐衣足食,5.2改動了下可以用了,下載地址如下,包含lib和庫即可,http://download.csdn.net/download/kingsollyu/6888211)  博主就用的這個,比較不錯。

      

     tolua++
使用MIT license。下載地址:http://www.codenix.com/~tolua/        //這個口碑也不錯呀~!各有所好~

                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM