国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站建設(shè)教程模板網(wǎng)站排名seo軟件

網(wǎng)站建設(shè)教程模板,網(wǎng)站排名seo軟件,做ppt的網(wǎng)站 知乎,WordPress搭建美國(guó)網(wǎng)站系列文章目錄 lua調(diào)用C/C的函數(shù),十分鐘快速掌握 C調(diào)用lua腳本,包括全局函數(shù)綁定、類綁定,十分鐘快速掌握 系列文章目錄摘要環(huán)境使用步驟碼代碼自定義函數(shù)多返回值變長(zhǎng)參數(shù) 自定義類test_sol2.lua內(nèi)容 程序輸出 摘要 在這個(gè)快節(jié)奏的技術(shù)博客…

系列文章目錄

lua調(diào)用C/C++的函數(shù),十分鐘快速掌握


C++調(diào)用lua腳本,包括全局函數(shù)綁定、類綁定,十分鐘快速掌握

  • 系列文章目錄
  • 摘要
  • 環(huán)境
  • 使用步驟
  • 碼代碼
    • 自定義函數(shù)
      • 多返回值
      • 變長(zhǎng)參數(shù)
    • 自定義類
    • test_sol2.lua內(nèi)容
  • 程序輸出


摘要

在這個(gè)快節(jié)奏的技術(shù)博客中,我們將借助sol2庫(kù),以十分鐘的時(shí)間快速掌握如何在C++中調(diào)用Lua腳本。sol2是一個(gè)輕量級(jí)的Lua綁定庫(kù),它簡(jiǎn)化了C++與Lua之間的交互,使得全局函數(shù)和類的綁定變得異常簡(jiǎn)便。我們將創(chuàng)建幾個(gè)”復(fù)雜的“函數(shù),變長(zhǎng)參數(shù)、多返回值,和一個(gè)具有幾個(gè)成員函數(shù)的簡(jiǎn)單類,通過(guò)sol2的簡(jiǎn)潔語(yǔ)法,只需幾行代碼,我們就能將C++函數(shù)綁定到Lua環(huán)境中,實(shí)現(xiàn)跨語(yǔ)言調(diào)用。

為了快速輸出我們要講的內(nèi)容,我不僅提供了實(shí)際的示例代碼,還將解釋每一步的操作,確保能夠迅速理解并運(yùn)用這一技術(shù)。通過(guò)這十分鐘的快速掌握,希望將能夠在項(xiàng)目中充分發(fā)揮C++與Lua的優(yōu)勢(shì),實(shí)現(xiàn)更靈活、高效的代碼編寫(xiě)。無(wú)論是全局函數(shù)的調(diào)用還是類的綁定,sol2為C++與Lua的融合提供了一種極具便利性和效率的解決方案。

環(huán)境

工具\(yùn)組件版本說(shuō)明
Windows10
visual studio2022
lua5.4
sol23.2.3
C++17sol2需要

使用步驟

lua頭文件和靜態(tài)鏈接庫(kù)或者動(dòng)態(tài)庫(kù),從官方網(wǎng)站下載預(yù)編譯好的即可,當(dāng)然如果你有自定義需求也可自行修改編譯。

引入sol2頭文件,從github上下載。

# 就是這三個(gè)文件,要按此層次結(jié)構(gòu)放好。
│  sol.hpp
│
└─solconfig.hppforward.hpp

visual studio新建個(gè)項(xiàng)目,C++語(yǔ)言標(biāo)準(zhǔn)設(shè)置為C++17。

加入頭文件和庫(kù)文件到項(xiàng)目中。

接下來(lái)就是碼代碼了。


碼代碼

自定義函數(shù)

多返回值

通過(guò)使用sol2我們不需要自己再寫(xiě)包裝方法,這一下就省了不少代碼。

std::tuple<int,const char*, double> multipleResultFunc(int a, const char* b, double c)
{//return std::tuple<int, char*, double>(a, b, c);return std::make_tuple(a, b, c);
}

變長(zhǎng)參數(shù)

int variaArgs(sol::variadic_args va)
{int r = 0;for (auto v : va){r += static_cast<int>( v);}return r;
}

自定義類

	class my_class{private:std::string m_str;public:int b = 24;int f() const{return 24;}void g(){++b;}void setTitle(const char* str){this->m_str = str;}void print(){std::cout << this->m_str << " , " << this->b << std::endl;std::wcout << this->rowname << L" , " << typeid( this->columns).name() << std::endl;}}
#define SOL_CHECK_ARGUMENTS 1
#include "sol.hpp"sol::state lua;lua.open_libraries(sol::lib::base);// "bark" namespacing in Lua// namespacing is just putting things in a tablesol::table bark = lua.create_named_table("bark");bark.new_usertype<my_class>("my_class","f", &my_class::f,"g", &my_class::g,"setTitle", &my_class::setTitle,"print", &my_class::print//,//"putUnsetValue", &my_class::putUnsetValue//,//"setSome", &my_class::setSome); // the usuallua.set_function("multipleResultFunc", multipleResultFunc);lua.set_function("variaArgs", variaArgs);// load and execute from filelua.script_file("test_sol2.lua");

test_sol2.lua內(nèi)容

obj = bark.my_class.new()
obj:g()
local result =obj:f()
obj:setTitle("I am Tom , and you ?")
print(">>>>>>")
obj:print()bark.print_my_class(obj)
print(result)print(bark.add_two_number(1,2))mr, mr2, mr3 = multipleResultFunc(11, "Jerry", 123.45)
print(mr, mr2, mr3)
print(mr)print("call variable args function", 1, 2, 3, 4)
local r= variaArgs(1,2,3,4)
print(variaArgs, r)

程序輸出

=== namespacing ===
I am Tom , and you ? , 25, class std::vector<unsigned long,class std::allocator<unsigned long> >
my_class { b: 25 }
24
3
11      Jerry   123.45
11
call variable args function     1       2       3       4
function: 0102B030      10
C source output Your name is Michael, and 2323 years old.
http://aloenet.com.cn/news/47042.html

相關(guān)文章:

  • 仿 wordpress簡(jiǎn)述seo的應(yīng)用范圍
  • 電腦關(guān)鍵字被限制 購(gòu)物網(wǎng)站明星百度指數(shù)在線查詢
  • 動(dòng)漫主題WordPressseo服務(wù)運(yùn)用什么技術(shù)
  • 電子商務(wù)網(wǎng)站開(kāi)發(fā)實(shí)戰(zhàn)長(zhǎng)春seo排名扣費(fèi)
  • 網(wǎng)站目錄文件查看在線一鍵免費(fèi)生成網(wǎng)頁(yè)網(wǎng)站
  • 自己的電腦做網(wǎng)站服務(wù)器嗎北京網(wǎng)站建設(shè)制作開(kāi)發(fā)
  • 食品公司名字大全上海網(wǎng)站seo
  • vs做動(dòng)態(tài)網(wǎng)站登錄青島百度快速排名優(yōu)化
  • 西安做網(wǎng)站推廣營(yíng)銷型網(wǎng)站建設(shè)方案
  • 網(wǎng)站介紹詞百度一下瀏覽器
  • 成都網(wǎng)站建設(shè)費(fèi)用免費(fèi)的推廣引流軟件下載
  • 天貓網(wǎng)站設(shè)計(jì)小米口碑營(yíng)銷案例
  • 網(wǎng)站制作驗(yàn)收單大數(shù)據(jù)是干什么的
  • 廣州市建設(shè)企業(yè)網(wǎng)站平臺(tái)什么叫做網(wǎng)絡(luò)營(yíng)銷
  • 有什么網(wǎng)站可以做初中試題sem是什么崗位
  • 知名高端網(wǎng)站設(shè)計(jì)企業(yè)百度網(wǎng)站檢測(cè)
  • 卡盟網(wǎng)站怎么做圖片素材網(wǎng)站seo方法
  • 網(wǎng)站搜索怎么做常見(jiàn)的網(wǎng)絡(luò)營(yíng)銷推廣方式有哪些
  • 建程網(wǎng)app下載西安seo和網(wǎng)絡(luò)推廣
  • 便宜 虛擬主機(jī)sem 優(yōu)化軟件
  • 基金管理公司司網(wǎng)站建設(shè)要求國(guó)際新聞今天
  • wordpress扒站工具北京網(wǎng)站制作公司
  • 網(wǎng)站建設(shè)價(jià)錢(qián)差異外貿(mào)接單平臺(tái)哪個(gè)最好
  • 做網(wǎng)站如何導(dǎo)入信用卡付款一個(gè)產(chǎn)品的市場(chǎng)營(yíng)銷策劃方案
  • ??诰W(wǎng)站開(kāi)發(fā)公司電話建立一個(gè)網(wǎng)站的費(fèi)用
  • 杭州濱江網(wǎng)站建設(shè)公司信息流優(yōu)化師面試常見(jiàn)問(wèn)題
  • go 是做網(wǎng)站的嗎廣州seo推薦
  • 網(wǎng)站開(kāi)發(fā)知識(shí)體系推廣普通話的意義簡(jiǎn)短
  • 尋花問(wèn)柳專注做一家男人愛(ài)的網(wǎng)站百度云網(wǎng)盤(pán)資源搜索
  • 網(wǎng)絡(luò)營(yíng)銷做私活網(wǎng)站智慧軟文發(fā)稿平臺(tái)官網(wǎng)