【问题标题】:Love 2D and ffi luajit, trying to use the PHYSFS_enumerateFiles()喜欢 2D 和 ffi luajit,尝试使用 PHYSFS_enumerateFiles()
【发布时间】:2015-07-19 07:16:28
【问题描述】:

它总是返回一个字符串,它是(至少我猜)有人可以提供帮助的表标识符?

这就是我的功能:

function listFiles(dir)
    local ffi = require("ffi")
    ffi.cdef[[char ** PHYSFS_enumerateFiles (   const char *    dir  );]]
    local liblove = ffi.os == "Windows" and ffi.load("love") or ffi.C
    local tb={}
    tb=liblove.PHYSFS_enumerateFiles(dir)
    return tb
end

它应该返回一个字符串,其中包含我传递给它的“Dir”的文件内容,但它没有。不知道为什么。

【问题讨论】:

  • 请注意:当您混合使用 andor(在任何语言中)时,请考虑始终使用括号,以避免与运算符优先级相关的意外。
  • 另外,调用这个函数时dir的值是多少,这个目录的实际内容是什么?如果dir是相对路径,那么调用这个函数时当前工作目录是什么?
  • 我忘记将“dir”添加到搜索路径。这样做并将 char** 转换为 char* 再转换为 String,它会起作用,对吧?
  • 我正在传递这个 C:/Users/Josué/Desktop/love/Texture Packs/ 它什么也没返回。它的内容是一个名为 default 的文件夹,里面有一堆 pngs。如果我尝试用 love 文件系统枚举它,它会返回一个表代码

标签: lua lua-table luajit


【解决方案1】:

您应该正确阅读reference。在最后一个字符串跟在 NULL 指针之后,枚举函数返回一个指向字符串指针的指针。从char* 到Lua 字符串的转换可以通过ffi.string 完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 2012-09-01
    • 2016-06-04
    • 2014-09-03
    相关资源
    最近更新 更多