請教各位問題,lua呼叫C函式,函式引數有字串

2021-03-03 21:34:26 字數 1943 閱讀 1490

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計算出來的...