January 31

On Wednesday, 31 January 2024 at 18:11:43 UTC, Johan wrote:

>

Did you check that the D type of g_type_string/boolean matches the size of the type of the C constants? (GType which is unsigned long in C, https://codebrowser.dev/gtk/gtk/subprojects/glib/gobject/gtype.h.html#383)

gtkd project uses size_t

https://github.com/gtkd-developers/GtkD/blob/17d7dc25e1adc9b86aff381b950f21706118ebeb/generated/gtkd/gobject/c/types.d#L51

-Steve

February 01

On Wednesday, 31 January 2024 at 20:01:51 UTC, Steven Schveighoffer wrote:

>

On Wednesday, 31 January 2024 at 18:11:43 UTC, Johan wrote:

>

Did you check that the D type of g_type_string/boolean matches the size of the type of the C constants? (GType which is unsigned long in C, https://codebrowser.dev/gtk/gtk/subprojects/glib/gobject/gtype.h.html#383)

gtkd project uses size_t

https://github.com/gtkd-developers/GtkD/blob/17d7dc25e1adc9b86aff381b950f21706118ebeb/generated/gtkd/gobject/c/types.d#L51

-Steve

The D type of g_type_xxxxx was the answer. My hack had defined it as uint, should be ulong. So the arguments on the stack were not what the C code was expecting.

Now I wonder why my code worked with dmd.

My most cpu-intensive application, the report generator, is about 9% faster compiled with ldc than dmd, both in release mode.

Thanks to everyone who replied and especially Johan, who asked the question that led me to the answer.

1 2
Next ›   Last »