【问题标题】:ffi.C missing all declarations for all symbolsffi.C 缺少所有符号的所有声明
【发布时间】:2014-11-07 20:12:56
【问题描述】:

我在文档中看到 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 似乎工作正常?

【问题讨论】:

  • 您发布的错误消息(“缺少减速...”)看起来不正确。请复制并粘贴您收到的确切消息,而不是试图解释它。
  • 其他ffi.C 功能是否正常工作?在回调中?因为该消息听起来意味着 luajit 找不到该名称的 C 库函数......这让我觉得很奇怪。
  • @EtanReisner 看起来没有 C 函数在工作......ffi.C.printf("Hello %s!", "world") 给了我一个关于 printf 的缺失声明。 ffi似乎在其他地方工作? (ffi.C 在任何地方都不能正常工作,即使在回调之外)。

标签: c++ lua malloc ffi luajit


【解决方案1】:

糟糕,没有将free 放入我的cdef!固定。

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

【讨论】:

  • 请接受你自己的答案(并考虑添加一些重要的细节——因为我无法投票)
猜你喜欢
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
相关资源
最近更新 更多