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

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

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

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

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,調用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
久久久久久噜噜噜久久久精品| 亚洲va国产va天堂va久久| 国产一区二区三区日韩欧美| 美女啪啪无遮挡免费久久网站| 国产一区二区三区毛片| 97免费视频在线播放| 日韩美女免费视频| 91久热免费在线视频| 亚洲男人天堂手机在线| 91国产视频在线播放| 国产999精品久久久| 亚洲国产精品va在看黑人| 国产网站欧美日韩免费精品在线观看| 国产中文字幕亚洲| 日韩va亚洲va欧洲va国产| 欧美激情一区二区久久久| 国产精品一区二区久久| 91精品国产99久久久久久| 欧美激情视频免费观看| 日韩欧美中文免费| 夜夜嗨av色一区二区不卡| 久久97精品久久久久久久不卡| 精品国产乱码久久久久酒店| 国产精品视频在线播放| 日韩欧美在线网址| 日本精品中文字幕| 欧美激情中文字幕乱码免费| 在线播放精品一区二区三区| 91久久精品国产91性色| 在线成人激情黄色| 精品视频一区在线视频| 亚洲精品中文字幕av| 国产激情久久久久| 久久精品99国产精品酒店日本| 国产精品日韩欧美综合| 欧美黑人国产人伦爽爽爽| 国外成人在线视频| 国产一区二区三区欧美| 国产亚洲欧美一区| 亚洲人成免费电影| 中文字幕精品一区二区精品| 亚洲国产99精品国自产| 欧美日本亚洲视频| 精品国产欧美一区二区五十路| 久久伊人精品一区二区三区| 欧美午夜丰满在线18影院| 久久精品视频亚洲| 亚洲天堂av在线免费观看| 日韩成人av网址| 国产在线观看精品一区二区三区| 2019亚洲男人天堂| 国产v综合ⅴ日韩v欧美大片| 91九色视频在线| 国产精品国产三级国产aⅴ浪潮| 久久69精品久久久久久久电影好| 日韩在线观看av| 午夜精品福利视频| 国产69久久精品成人看| 日韩欧美综合在线视频| 欧美成aaa人片免费看| 欧美色视频日本版| 青青草成人在线| 久久国产精品久久国产精品| 亚洲视频在线视频| 91香蕉嫩草神马影院在线观看| 91精品91久久久久久| 久久99久久99精品中文字幕| 欧美性理论片在线观看片免费| 久久国产精品亚洲| 欧美视频裸体精品| 97avcom| 亚洲精品动漫100p| 国产福利精品在线| 岛国视频午夜一区免费在线观看| 成人写真视频福利网| 中文字幕九色91在线| 国产欧美一区二区三区久久| 97香蕉久久超级碰碰高清版| 亚洲福利影片在线| 一区二区三区四区视频| 亚洲欧洲av一区二区| 日本免费在线精品| 亚洲精品福利在线| 亚洲男人的天堂在线播放| 69视频在线播放| 亚洲一区二区三区xxx视频| 91国产精品91| 亚洲天堂男人的天堂| 亚洲精品久久久久久久久久久| 久久精品亚洲精品| 亚洲欧美另类在线观看| 日本久久亚洲电影| 国产精品成人品| 日韩欧美一区二区三区| 亚洲а∨天堂久久精品9966| 在线视频国产日韩| 欧美猛男性生活免费| 成人网欧美在线视频| 欧美精品一区二区三区国产精品| 中文字幕亚洲一区| 一本色道久久综合狠狠躁篇怎么玩| 久久国产精品久久久| 日韩经典中文字幕| 欧美高清视频免费观看| 992tv成人免费影院| 欧美亚洲另类激情另类| 俺去啦;欧美日韩| 亚洲精品国产精品自产a区红杏吧| 国产精品高潮呻吟视频| 狠狠久久五月精品中文字幕| 国产精品久久久久久久久久东京| 国产丝袜精品视频| 欧美专区中文字幕| 尤物tv国产一区| 91亚洲精品一区| 欧美激情精品久久久久久黑人| 欧美日韩综合视频| 成人免费在线视频网址| 欧美成人精品在线播放| 国产成人综合av| 青青a在线精品免费观看| 久久久久久久久电影| 亚洲精品大尺度| 欧美激情奇米色| 国产欧美va欧美va香蕉在| 韩国国内大量揄拍精品视频| 久久天天躁狠狠躁夜夜躁2014| 97视频免费看| 91久久精品日日躁夜夜躁国产| 国产精品视频白浆免费视频| 一区二区三区高清国产| 欧美国产日韩精品| 国内外成人免费激情在线视频| 国产日韩欧美电影在线观看| 亚洲精品自在久久| 欧美国产在线电影| 在线丨暗呦小u女国产精品| 成人黄色激情网| 97国产精品免费视频| 中文国产成人精品久久一| 久久五月天色综合| 精品亚洲aⅴ在线观看| 欧美另类极品videosbest最新版本| 国产成人精品视频| 欧洲成人免费aa| 日韩精品极品毛片系列视频| 国产精品一区二区久久| 日韩在线视频免费观看高清中文| 欧美乱大交xxxxx| 97在线免费观看视频| 亚洲欧美国产制服动漫| 欧美电影免费观看高清| 日韩有码在线电影| 日韩欧美国产视频| 欧美第一黄网免费网站| 91手机视频在线观看| 成人黄色av免费在线观看| 久久综合国产精品台湾中文娱乐网| 51精品在线观看| 欧美日韩国产二区| 国产亚洲欧洲高清一区| 亚洲精品日韩欧美| 91嫩草在线视频| 欧美wwwxxxx|