I'm trying to run OpenGL sample with Dlang.
void onError(int code, const(char)* text) nothrow
{
}
Usage:
glfwSetErrorCallback(&onError);
Binding code:
__gshared {
da_glfwSetErrorCallback glfwSetErrorCallback;
...
extern( C ) @ nogc nothrow {
alias da_glfwSetErrorCallback = GLFWerrorfun function( GLFWerrorfun );
...
alias GLFWerrorfun = void function( int, const( char )* );
And i get the following compiler error:
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)
Compiler: 2.065.0
From the interfacing to C guidelines on callbacks:
D can easily call C callbacks (function pointers), and C can call callbacks provided by D code if the callback is an extern(C) function, or some other linkage that both sides have agreed to (e.g. extern(Windows)).
So I think you need your onError
function to be declared as extern(C)
in order for it to match the type signature.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With