程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++調用Lua編程環境搭建及測試代碼示例

C++調用Lua編程環境搭建及測試代碼示例

編輯:C++入門知識

測試環境是VS2005+LuaForWindows_v5.1.4-45.exe+WIN7
1.安裝lua開發環境LuaForWindows_v5.1.4-45.exe
2.啟動VS2005,選擇C++下的"win32"項目類型中的"Win2控制台應用程序"
3.工具——選項——項目和解決方案——VC++目錄——可執行程序(C:\Program Files\Lua\5.1);包含文件(C:\Program Files\Lua\5.1\include);庫文件(C:\Program Files\Lua\5.1\lib);項目——'項目名'屬性 子菜單——配置屬性——鏈接器——輸入——附加依賴項(lua51.lib lua5.1.lib)
第3部的詳細配置可參照百度文庫中的這篇文檔:
VS上Lua編程環境搭建
www.2cto.com
4.之後在 “項目名.cpp”文件中編程如下:

// CYLua.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"
 // 這是個C++程序, 所以要extern "C",
// 因為lua的頭文件都是C格式的
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
/* the Lua interpreter */
lua_State* L;

int luaadd ( int x, int y )
{
int sum;

/* the function name */
lua_getglobal(L, "add");

/* the first argument */
lua_pushnumber(L, x);

/* the second argument */
lua_pushnumber(L, y);

/* call the function with 2
arguments, return 1 result */
  //說明調用的函數是帶有2個參數和1個返回值
lua_call(L, 2, 1);

/* get the result */
sum = (int)lua_tonumber(L, -1);
lua_pop(L, 1);

return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
int sum;

/* initialize Lua */
L = lua_open();
        luaopen_base(L);
/* load Lua base libraries */
luaL_openlibs(L);

/* load the script */
       /*Lua01.lua是這個C++程序調用的Lua文件,注意luaL_dofile()函數的第二個參數要寫絕對路徑,否則執行後會提示“unprotected error in call to lua api(attampt to call a nil value)”錯誤 */
luaL_dofile(L, "D:\\LuaTestDoc\\Lua01.lua");

/* call the add function */
sum = luaadd( 10, 15 );

/* print the result */
   printf( "The sum is %d", sum );

/* cleanup Lua */
lua_close(L);
   
return 0;
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
打開SciTE的Lua集成開發環境,編輯Lua01.lua文件如下(本程序是把此文件放在了D:\LuaTestDoc\路徑下,故當加載並編譯此Lua文件時這樣寫:luaL_dofile(L, "D:\\LuaTestDoc\\Lua01.lua");):
function add(x,y)
  return x+y
end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最後:ctrl+F5編譯運行代碼:運行結果會是:The sum is 25.
作者:angxiao

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved