亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++利用LuaIntf調用Lua的方法示例

2020-05-23 13:36:17
字體:
來源:轉載
供稿:網友

C++利用LuaIntf調用Lua

本文主要介紹了C++利用LuaIntf調用Lua的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

void LuaTest::OnResponse(uint32_t uLuaRpcId, const std::string& sRespContent) const{ using LuaIntf::LuaRef; LuaRef require(m_pLuaState, "require"); try {  LuaRef handler = require.call<LuaRef>("client_rpc_response_handler");  handler.dispatchStatic("handle", uLuaRpcId, sRespContent); } catch (const LuaIntf::LuaException& e) {  std::cerr << "Failed to call lua client_rpc_response_handler.handle(), "   << e.what() << std::endl; }}

這是測試客戶端代碼,可以寫Lua代碼測試服務器.

Lua代碼中發出一個Rpc請求時, 會在Lua中保存一個回調, 待收到應答時觸發回調. 通過uLuaRpcId來索引該回調.

sRespContent 是收到的應答包, 將在lua中解包.

OnResponse() 就是調用了 Lua 代碼:

require("client_rpc_response_handler").handle(uLuaRpcId, sRespContent)

利用lua-intf來調用C++函數

這里主要是在windows利用VS2015完成,首先是配置lua環境,包含lua的頭文件,連接器里面鏈接lua的靜態庫,然后就是包含lua-intf的代碼,具體如下表

C++,調用lua,c,調用lua函數,lua,函數調用

需要注意的是:lua-intf_d6f17a是一個包含lua-intf的目錄。

lua-intf的代碼在github上可以下載:https://github.com/SteveKChiu/lua-intf

如何使用看他的README.md

這里我們主要是測試綁定C++類中的函數,工程目錄結構如下

main.cpp代碼如下

#include <iostream> #include <lua.hpp> #include <LuaIntf/LuaIntf.h> #include <string>  const char SCRIPTS_DIR[] = "../scripts";  using namespace std;  struct lua_State;  class TestLog { public:  static TestLog *getInstance()  {   static TestLog instance;   return &instance;  }   ~TestLog();  void Log(const string &str);  void BindLua(lua_State *l);  private:  TestLog();   };  TestLog::TestLog() { }  TestLog::~TestLog() { }  void TestLog::Log(const string &str) {  cout << str << endl; }  namespace {  using LuaRef = LuaIntf::LuaRef;   void LuaLog(const string &str)  {   TestLog::getInstance()->Log(str);  }   namespace LuaTestLog  {   void Bind(lua_State* L)   {    assert(L);    LuaIntf::LuaBinding(L).beginModule("c_testlog")     .addFunction("log", &LuaLog)     .endModule();   }  }; };  void TestLog::BindLua(lua_State *l) {  LuaTestLog::Bind(l); }  int main() {  lua_State *l = luaL_newstate();  luaL_openlibs(l);  TestLog::getInstance()->BindLua(l);  cout << "mmmmmmmmmmm" << endl;  luaL_dofile(l, "test.lua");  system("pause");  return 0; } 

log.lua代碼如下:

local Log = {}  local log = c_testlog.log  function Log:new(log_name)  assert("table" == type(self))  assert(not log_name or "string" == type(log_name))  local log = {}  log.log_name = log_name or "Log"  setmetatable(log, self)  self.__index = self  return log end  function Log:set_log_name(log_name)  self.log_name = log_name end  function Log:info(pattern, ...)  log(string.format(pattern, ...)) end  function Log:debug()  print("ssssssssssssssssssssssssss") end  return Log 

test.lua代碼如下:

local function main()   print("dddddddddddddddddddddddd")  local p = "../testLuaIntf"  package.path = package.path ..";" .. p .. "/" .. "testLuaIntf" .. "/?.lua"  --package.path = package.path .. "E:/VSProject/?.luac"   print("bbbbbbbbbbbbbbbbbbbbbbbbbbbbb")   local log = require("log"):new("svn_log")  log:info("%d...",1)    --:new("svc_log")  print("ssssssssssssssssssssssss")   end   xpcall(main,function(...) local msg = {...}; for k ,v in pairs(msg) do print("k=" .. tostring( k) .. " v=" .. tostring(v))  end print(tostring() .. " 123") end) 

這里流程通過C++調lua的接口luaL_dofile(l, "test.lua");來執行test.lua,test.lua中require("log"),然后lua再調用C++的函數Log完成打印

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久亚洲福利精品午夜| 欧美wwwwww| 色婷婷**av毛片一区| 韩国视频理论视频久久| 日韩高清电影好看的电视剧电影| 亚洲午夜女主播在线直播| 国产精品自产拍在线观看中文| 亚洲国产91色在线| 日韩视频在线免费观看| 在线成人免费网站| 色婷婷亚洲mv天堂mv在影片| 国产亚洲aⅴaaaaaa毛片| 懂色av一区二区三区| 欧美激情亚洲激情| 久久好看免费视频| 久久久免费精品视频| 日韩av手机在线观看| 亲爱的老师9免费观看全集电视剧| 粉嫩老牛aⅴ一区二区三区| 久久久久久久久久久免费| 精品久久久久久中文字幕| 亚洲成人教育av| 九九综合九九综合| 播播国产欧美激情| 一区二区欧美日韩视频| 岛国视频午夜一区免费在线观看| 欧美日韩日本国产| 亚洲欧美日韩精品久久奇米色影视| 久久99国产精品久久久久久久久| 欧美怡红院视频一区二区三区| 1769国内精品视频在线播放| 日韩毛片中文字幕| 日韩欧美国产黄色| 国产一区二区三区在线免费观看| 久久99热精品| 91精品视频免费看| 国产欧美在线播放| 欧美做受高潮1| 欧美日韩中文字幕综合视频| 国产亚洲a∨片在线观看| 高清在线视频日韩欧美| 爽爽爽爽爽爽爽成人免费观看| 亚洲热线99精品视频| 亚洲国产毛片完整版| 亚洲视频axxx| 日韩在线观看免费全| 亚洲精品午夜精品| 久久久久免费视频| 69久久夜色精品国产69乱青草| 欧美性xxxxxx| 欧美在线不卡区| 92国产精品久久久久首页| 国产精品欧美一区二区| 国内精品国产三级国产在线专| 最近2019中文免费高清视频观看www99| 亚洲sss综合天堂久久| 国产成人精品在线观看| 国产成+人+综合+亚洲欧洲| 久久精品人人爽| 韩国欧美亚洲国产| 亚洲人成77777在线观看网| 欧美国产精品va在线观看| 国产一区二区三区在线视频| 亚洲国产精品悠悠久久琪琪| 91精品视频观看| 狠狠色狠狠色综合日日小说| 久久人人爽人人爽人人片亚洲| 欧美性开放视频| 亚洲欧美中文日韩v在线观看| 伊人久久男人天堂| 中文字幕国内精品| 高清亚洲成在人网站天堂| 成人黄色免费片| 精品欧美一区二区三区| 中文字幕精品视频| 国产精品精品久久久| 国产精国产精品| 色诱女教师一区二区三区| 成人精品久久av网站| 日韩中文字幕免费| 欧美电影免费播放| 中文字幕久久亚洲| 不卡av在线网站| 高清一区二区三区日本久| 97久久久久久| 久久久久久久久久久免费精品| 韩国一区二区电影| 国产日韩精品入口| 一区三区二区视频| 九九精品在线观看| 91综合免费在线| 亚洲理论电影网| 在线观看久久久久久| 国产精品爱久久久久久久| 国产亚洲欧洲黄色| 午夜精品蜜臀一区二区三区免费| 911国产网站尤物在线观看| 成人久久久久久| 红桃视频成人在线观看| 国产剧情久久久久久| 青青草一区二区| 亚洲男人天堂久| 欧美成人合集magnet| 九色成人免费视频| 91亚洲va在线va天堂va国| 国产精品极品美女粉嫩高清在线| 国产日韩欧美自拍| 日韩久久免费视频| 国产精品日韩欧美综合| 韩国精品久久久999| 美女福利视频一区| 国产一区二区三区视频| 久久久成人av| 成人免费直播live| 大桥未久av一区二区三区| 国产91在线播放九色快色| 成人性生交大片免费观看嘿嘿视频| 亚洲视频在线视频| 69av成年福利视频| 欧美成人全部免费| 欧美激情欧美激情在线五月| 66m—66摸成人免费视频| 正在播放欧美视频| 成人午夜两性视频| 91精品国产综合久久香蕉| 伊人激情综合网| 亚洲人成电影网站| 97国产精品视频| 国产精品久久久久久久av大片| 欧美性猛xxx| 国产成人综合精品在线| 亚洲成人av片| 欧美有码在线观看| 欧美日本啪啪无遮挡网站| 一本色道久久综合亚洲精品小说| 亚洲综合日韩中文字幕v在线| 日韩美女中文字幕| 国产一级揄自揄精品视频| 亚洲v日韩v综合v精品v| 中日韩美女免费视频网站在线观看| 国产精品91久久久| 曰本色欧美视频在线| 日韩av一区二区在线| 88国产精品欧美一区二区三区| 欧美理论电影网| 日韩欧美极品在线观看| 欧美伦理91i| 91九色国产在线| 久久人人爽亚洲精品天堂| 日韩欧亚中文在线| 亚洲一区二区少妇| 国产精品视频男人的天堂| 久久人人爽人人爽人人片av高请| 91精品国产高清| 国产精品久久不能| 日韩精品中文字幕在线观看| 欧美日韩福利电影| 亚洲自拍高清视频网站| 亚洲女人天堂成人av在线| 色yeye香蕉凹凸一区二区av| 中文字幕精品www乱入免费视频| 日韩www在线| 欧美日韩亚洲91| 国产日韩欧美在线播放|