校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Lua中調用C++函數示例

Lua中調用C++函數示例

熱門標簽:杞縣地圖標注app ??谥悄苷Z音電銷機器人好用嗎 艾比利外呼系統 電話機器人每天搜索多少次 免費門店地圖標注注冊入駐 外呼系統一天耗費多少流量 陜西便宜電銷機器人軟件 衡水外呼線路解決 昆明電話外呼系統好么

Lua當然也能夠調用C中定義的函數。一個平均數的例子,解釋一下。
  
下面給出的C++函數average()演示了如何接受多個參數且返回超過一個值。
1.lua_gettop函數返回棧頂的索引值。因為在Lua中棧是從1開始編號的,因此該函數獲得的值就是參數的個數。

2.在for循環中計算所有參數之和。
3.調用lua_pushnumber()將參數的平均值壓棧。 
4.最后,函數返回1,說明有一個返回值在棧中。
現在C++函數已經被定義好了,我們必須將它告訴Lua解釋器。這將在main函數中初始化Lua解釋器和載入庫完成之后完成注冊函數:

復制代碼 代碼如下:

lua_register(L, "avg", average);  //第二參數為Lua中調用的函數名 

 
C++端:
 

#include "stdafx.h" 
#includestdio.h> 
 
extern "C" { //如不用extern會出現連接錯誤,編譯成了C++文件 
#include lua.h> 
#include lualib.h> 
#include lauxlib.h> 
} 
 
int average(lua_State *L){ 
 int n= lua_gettop(L); 
 int i; 
 double sum=0; 
 for(i=0;in;i++){ 
  sum+=lua_tonumber(L,-1); 
  lua_pop(L,1); 
 } 
 lua_pushnumber(L,sum/n); 
 if(!lua_isnumber(L,-1)) 
  luaL_error(L,"push error!\n"); 
 return 1; 
} 
 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
 lua_State* L = lua_open(); 
 luaL_openlibs(L); //新版本庫添加的方法 
 
 lua_register(L,"avg",average); 
 luaL_dofile(L,"cof.lua"); 
 
 getchar(); 
 return 0; 
} 

Lua文件:

復制代碼 代碼如下:

print("avg is ",avg(1,2,3,4,5,6,7,8)) 

運行程序即可實現求平均數的功能

您可能感興趣的文章:
  • Lua和C/C++互相調用實例分析
  • C++利用LuaIntf調用Lua的方法示例
  • 使用Lua來擴展C++程序的方法
  • 把Lua函數傳遞到C/C++中實例
  • Lua和C++語言的交互詳解
  • C++與Lua交互原理實例詳解

標簽:西寧 臨滄 宿遷 營口 泰安 昌都 南京

巨人網絡通訊聲明:本文標題《Lua中調用C++函數示例》,本文關鍵詞  Lua,中,調用,C++,函數,示例,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中調用C++函數示例》相關的同類信息!
  • 本頁收集關于Lua中調用C++函數示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 台山市| 桂东县| 修武县| 威远县| 克什克腾旗| 安达市| 海伦市| 武安市| 伊宁市| 平乡县| 酒泉市| 迁西县| 德令哈市| 嵊州市| 肥乡县| 余江县| 喀喇沁旗| 静海县| 彰武县| 大洼县| 筠连县| 太仆寺旗| 即墨市| 沐川县| 错那县| 伊春市| 汕头市| 靖西县| 家居| 东辽县| 阿尔山市| 巴彦淖尔市| 剑河县| 夹江县| 宣恩县| 沂南县| 西城区| 宾阳县| 枞阳县| 达州市| 滦南县|