ffi.C缺少所有符号的声明

4

我在文档中看到 ffi.C.free 是可用于释放 malloc 的东西。我试图在这里进行释放:

callbacks.free_buffer = function(buffer) 
  print("free_buffer_callback") 
  ffi.C.free(buffer)
end

我遇到了这个错误:

missing declaration for symbol 'free'

这是否意味着我需要首先使用FFI自己分配内存?我不能在这个特定的函数中这样做(因为它是回调函数的参数)。我该如何释放此缓冲区?
编辑:看起来所有的ffi.C函数都无法工作,即使在回调函数之外。否则我的ffi似乎工作正常?

你发布的错误信息(“缺少声明…”)看起来不对。请复制并粘贴您收到的确切消息,而不是试图转述它。 - user149341
2
其他的 ffi.C 函数是否正常工作?在回调函数中呢?因为那个信息听起来像是 luajit 找不到这个名称的 C 库函数... 这让我感到非常奇怪。 - Etan Reisner
@EtanReisner 看起来没有 C 函数在工作... ffi.C.printf("Hello %s!", "world") 给我一个 printf 缺少声明的错误。虽然 ffi 在其他地方似乎是有效的?(ffi.C 无论何时都不能正常工作,即使在回调之外)。 - theman
1个回答

6

糟糕,我没有将free放入我的cdef中!已修复。

ffi.cdef[[
  void free(void *ptr);
]]

2
请接受您自己的答案(并考虑添加一些必要的细节--目前我无法点赞)。 - Oliver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接