Calling C functions with D function pointers as operands

Zarathustra adam.chrapkowski at gmail.com
Sat Apr 26 08:54:20 PDT 2008


How can I call C functions with D function pointers as operands?

I tried this:
	// gl2psUserWritePNG & gl2psUserFlushPNG are static
	void function(png_struct*, ubyte*, uint) gl2psUserWritePNG_ptr
= &gl2psUserWritePNG;
	void function(png_struct*)
gl2psUserFlushPNG_ptr = &gl2psUserFlushPNG;

	png_set_write_fn(
		png_ptr,
		cast(void*)png,
		gl2psUserFlushPNG_ptr,
		gl2psUserFlushPNG_ptr
	);

but there are some errors:
 Error: cannot implicitly convert expression (gl2psUserWritePNG_ptr)
of type void function(png_struct*, ubyte*, uint) to voidC  function
(png_struct*, ubyte*, uint)

 Error: cannot implicitly convert expression (gl2psUserFlushPNG_ptr)
of type void function(png_struct*) to voidC  function(png_struct*)


More information about the Digitalmars-d-learn mailing list