Совершенно неофит, когда дело доходит до ffi, ищет помощи в получении этой декларации c / c ++, закодированной в lua через ffi.
Как я читаю код, у меня есть функция, у которой указатель на функцию является одним из переданных параметров. Я могу быть совершенно неправ, я сказал, что я неофит!
Это typedef:
ffi.cdef[[typedef void (* XPLMReceiveMonitorBoundsGlobal_f)(
int inMonitorIndex,
int inLeftBx,
int inTopBx,
int inRightBx,
int inBottomBx,
void * inRefcon);]]
и это определение функции:
ffi.cdef("void XPLMGetAllMonitorBoundsGlobal(XPLMReceiveMonitorBoundsGlobal_f inMonitorBoundsCallback, void * inRefcon)")
Я пытался угадать, как кодировать это в lua около 4 часов, используя все, что моё воображение могло собрать, например:
XPLM.XPLMGetAllMonitorBoundsOS(XPLMReceiveMonitorBoundsOS_f(monindex, leftpx, toppx, rightpx, bottompx, nil), nil)
XPLM.XPLMGetAllMonitorBoundsOS(), nil)
Я ничего не думал о работах, и поиски в Google и много чтения не приблизили меня к ответу.
Кодировка для приложения lua в симуляторе полета XPlane, самая близкая вещь к полученной ошибке:
"attempt to call global 'XPLMReceiveMonitorBoundsOS_f' (a nil value)"
Может быть, мне нужно что-то определить с помощью ffi.new (), ffi.cast () и т. Д., И т. Д., Что бы я ни говорил, я не смог придумать ответ.
Любая помощь с благодарностью.
Ian