1樓:遺忘尛獵
第一個問抄題: 你不要把lua 源**襲裡面的引數和lua擴充套件的c函式裡面的引數混淆了。lua那邊,是不管什麼指標的(那個plc這邊函式裡面的引數,當然要求是pl指標。
第二個問題: 對於一個c函式來說,它必須返回一個int值。這個int值告訴lua,它返回幾...
關於在lua中呼叫c++函式的問題、、、、求高手! 100
2樓:匿名使用者
第一個問題:
你不要把lua 源**裡面的引數和lua擴充套件的c函式裡面的引數混淆版了。lua那邊,是不管什麼指權針的(那個plc這邊函式裡面的引數,當然要求是pl指標。
第二個問題:
對於一個c函式來說,它必須返回一個int值。這個int值告訴lua,它返回幾個引數到lua裡面去(可以是返回0個引數;如果是0,那麼就返回0)。
第三個問題:
lua_tonumber就是把lua堆疊裡的相應索引的值作為一個整數返回。你這條語句裡就是把lua那邊傳給來的引數賦給了num變數。
3樓:onlylove無雨
你的形參指標型別,也就是一個地址,在機器裡,地址是用整數表示的。
傳一個版整數進去,是不會報錯的權。
我猜你的這個函式應該在類 hellolua 已經定義了原型,在類外實現時,只能按照原型來實現,如果修改返回型別,就變成了重新定義,也就是過載,在類外是不允許過載原型的。
你說的是不是這樣:int num; lua_pushnumber(pl,f(num));
num 裡應該是初始時的預設值,應為 f 函式是值傳遞,不會改變num的值,除非 f 函式引數為指標型別,而且返回型別為 指標型別。
lua如何呼叫c++函式?
4樓:
順序搞反了啊。 你已經定義了 csum 函式lual_dofile 那一句放到 lua_setglobal後面。
你必須在l 環境中註冊 int csum(lua_state*)函式後,然回
後再答dofile。不然你dofile的時候c函式還沒有註冊,lua當然無法使用這個函式啦。
c++ 呼叫lua函式問題。
5樓:空雪夢見
1、你是不是要對建立出來的虛擬機器呼叫lual_openlibs一下?
2、啥叫載入lua模組......送一內個包含載入模組的lua語句的字串到容虛擬機器裡面跑一下是不是能解決3、我也覺得可以直接呼叫函式啊,詳細說一下「行不通」是什麼情況。因為我以前寫的東西就是載入一次指令碼,然後就一直呼叫裡面的函式了,沒遇到問題......
6樓:匿名使用者
不懂你在說什麼,為什麼呼叫模組方法會失敗,你怎麼匯入的模組,給點**比說一堆話都好解釋
另外,已經存在的函式,不需要載入什麼檔案就能一直用,完全不懂你在搞什麼
7樓:咋地要啥沒啥
雖然過了很長時間了,但是最近我也在找怎麼能解決這個問題。
最後我看版到了lua原始碼中一個函式權
是這麼寫的,應該是可以的。總體上說,就是模組會作為一個table存放在_g中。所以,先獲取這個模組,再在模組中搜尋函式,然後就push引數呼叫。
static int traceback (lua_state *l)
lua_getfield(l, -1, "traceback");
if (!lua_isfunction(l, -1))
lua_pushvalue(l, 1); /* pass error message */
lua_pushinteger(l, 2); /* skip this function and traceback */
lua_call(l, 2, 1); /* call debug.traceback */
return 1;}
關於C語言的函式呼叫(初級問題)
一個函式只能返回一個返回值,double d z 寫的不對。你可以把周長,面積,體積寫成三個函式,周長 double a double z 面積 double b doulbe z 體積 double c doulbe z 呼叫時寫為 y1 a x y2 b x y3 c x 可以返回陣列指標,這樣...
c語言中反三角函式的呼叫,C語言中反三角函式的呼叫
反3角函式有 acos double asin double atan double atan double,double 返回值 double 型,弧度值。轉角度要 180.0 3.1416。例如 1 include 2 include 3 include 4 int main 5 1 反三角函式...
C語言指標陣列的問題,請教各位大神
第一點,兩個按照順序儲存,所以噸輸出後輸出米,車,長 第二點,sizeof arrayquantityunit 這句話的結果是4,因為指標是4個位元組 請注意sizeof的使用,sizeof計算出來的結果是按照byte計算的,一個指標變數在32位系統中佔4byte 32bit sizeof計算出來的...