这里的第一次海报。我正在使用Lua和Love2D开发游戏程序,在程序的一部分中,我创建了一个坐标列表并获取所有唯一坐标并将它们放在另一个列表中。该程序是功能性的,我使用列表的效果看起来很棒。但是,这些列表最终会成千上万个项目,游戏最终以低于20fps的速度运行。我希望我能写一个小的C程序来加速它并将它绑定到Lua。我编写了我的程序,它(经过很多努力)编译成.so库。我将库加载到lua(也经过很多努力),然后它抛出错误
missing declaration for symbol '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。关于如何进步的任何想法?