Lua FFI 抛出缺少声明错误,尽管我写了声明

首次发布者在这里。我正在使用 Lua 和 Love2D 开发游戏程序,在程序的一部分中,我创建了一系列坐标,并获取所有唯一的坐标并将它们放在另一个列表中。程序是功能性的,我用列表的效果看起来很棒。然而,列表最终成为数千个项目长,并且游戏最终在低于20fps下运行。我希望我能写一个小的 C 程序来加快这个过程并将其绑定到 Lua。我编写了我的程序,它编译成了一个 .so 库(经过了许多努力)。我将库加载到 Lua 中(也经过了许多努力),然后它抛出错误

缺少符号'coordinarray'的声明

这很奇怪,因为我在顶部有一个 ffi.cdef。那么到底发生了什么?我没有看到任何人有这个确切的问题,并且我查看的教程在代码方面看起来与我的代码相同:

local ffi = require 'ffi'
ffi.cdef = [[

struct coordinates{
    double x;
    double y;
};

bool coordinarray(struct coordinates a, struct coordinates b[]);

]]
local spdmth = ffi.load("./spdmth/libspdmth.so")

然后我进行了一个测试函数调用,在这个地方会抛出错误:

    spdmth.coordinarray({x = 1, y = 1}, vispass)

我的 C 程序中的函数也被命名为 coordinarray,并像声明中一样返回一个 bool。有任何建议吗?

点赞