c - 将字符串指针传递给 lua

标签 c pointers lua

我在 C 中有一个长字符串,我想将其传递给 lua 函数。但是因为字符串很长我不想传递它,我想将字符串指针传递给lua。我通过使用 lua_pushlightuserdata 来做到这一点,但在 Lua 中我不能使用这个指针。

C 代码:

char* st = "abcdefghijklmnopqrstuvwxyz1234567890";
lua_getglobal(myLuaState,"kk");
lua_pushlightuserdata(myLuaState,st);
lua_pcall(myLuaState, 1, 0, 0);

Lua代码:

function kk(a)
    print(a)
end

代码的结果是:

userdata: 0x41b4d8

最佳答案

你可以在Luajit中使用ffi

function kk(a)
    local ffi = require("ffi")
    s = ffi.string(a)
    print(s)
end

结果是:

abcdefghijklmnopqrstuvwxyz1234567890

关于c - 将字符串指针传递给 lua,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48852273/

相关文章:

c++删除指针然后访问它指向的值

macos - 在 Mac OS X 上使用 IUP

lua - 如何在Lua中对数字表求和?

Lua 中的字符串操作 : Swap characters in a string

c - 链表创建运行时错误

c++ - 绑定(bind)在同一端口上的两个进程如何接收相同的消息?

c++ - 字符数组和指针的区别

c - 如何从c中的字符串中提取数字?

在结构体中调用malloc

c - 改变 C 指针的值后释放它