要理解lua和c的互動,先要理解堆疊和全域性表兩個概念
lua和c/c++語言互動的主要方法是乙個無處不在的虛擬棧,棧的特點是先進後出.
lua的全域性表可以想象成乙個map雜湊表結構,比如lua有乙個變數:
name = 「hello world」全域性表中存放了
name
和hello world
的對應關係, 可以通過name
在全域性表中找到對應的hello world
c/c++想要獲取lua中的name
字串的值, 首先把name
放到堆疊(棧頂),方便lua看到;
lua從堆疊(棧頂)獲取到name
的值, 此時棧頂變為空;
lua去全域性表中查詢name
對應的字串;
全域性表返回對應的字串hello world
;
lua再次把hello world
放到堆疊(棧頂);
c/c++從堆疊(棧頂)獲取name的值.
**注意:**為了更好的展示原理,文中的來自於網路上部落格中.
Lua和C語言的互動(一)
lua生來就是為了和c互動的,因此使用c擴充套件lua或者將lua嵌入到c當中都是非常流行的做法。要想理解c和lua的互動方式,首先要回顧一下c語言是如何處理函式引數的。c函式和引數 大家知道c語言是用彙編實現的,在組合語言中可沒有函式的概念,與函式對應的是叫做子過程的東西,子過程就是一段指令,乙個...
Lua和C語言的互動(一)
lua生來就是為了和c互動的,因此使用c擴充套件lua或者將lua嵌入到c當中都是非常流行的做法。要想理解c和lua的互動方式,首先要回顧一下c語言是如何處理函式引數的。c函式和引數 大家知道c語言是用彙編實現的,在組合語言中可沒有函式的概念,與函式對應的是叫做子過程的東西,子過程就是一段指令,乙個...
Lua和C 的互動
step1 搭建好vs和lua相互動的環境 2.有lua lib.lib這個檔案 3.開始配置 滑鼠放在工程名那 右鍵選屬性 位址就選上面有原始碼的檔案路徑。如上,把引用目錄點開進行編輯位址是選lib檔案的位址 如上,吧庫目錄點開進行編輯位址也是lib檔案的位址 step2 給這個工程新增標頭檔案 ...