Передача указателя функции в Dlang
Я пытаюсь запустить образец OpenGL с Dlang.
void onError(int code, const(char)* text) nothrow
{
}
использование:
glfwSetErrorCallback(&onError);
переплет код:
__gshared {
da_glfwSetErrorCallback glfwSetErrorCallback;
...
extern( C ) @ nogc nothrow {
alias da_glfwSetErrorCallback = GLFWerrorfun function( GLFWerrorfun );
...
alias GLFWerrorfun = void function( int, const( char )* );
и я получаю следующую ошибку компилятора:
Error: function pointer glfwSetErrorCallback (extern (C) void function(int, const(char)*) nothrow) is not callable using argument types (void function(int code, const(char)* text) nothrow)
компилятор: 2.065.0
1 ответов
С сопряжение с руководящими принципами C на вызовы:
D можно легко вызвать с ответами (указатели на функции), и C может вызвать обратные вызовы, предлагаемые в D кода, если функция обратного вызова является Экстерн(Си) функция, или какая другая связь, что обе стороны договорились (например, Экстерн(окна)).
поэтому я думаю, что тебе нужно onError
функция должна быть объявлена как extern(C)
для того, чтобы соответствовать сигнатуре типа.