進入游戲行業,開始學習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/ //這個口碑也不錯呀~!各有所好~