xxxxxxxxxx
module bclib;
import core.stdc.stdio : printf;
extern(C++) class Baz
{
int a = 10;
void someFunction()
{
}
}
struct BazInitializer
{
void*[1]* vtbl;
int a;
}
pragma(mangle, "_D5bclib3Baz6__initZ")
extern static __gshared BazInitializer initializer;
pragma(mangle, Baz.someFunction.mangleof)
extern(C++) void someFunction(Baz baz);
extern(C) void main()
{
// import core.demangle;
// auto initDem = mangle!(void*)("bclib.Baz.__init");
// printf("Mangled name of initializer (replace Pv with Z): %s\n", &initDem[0]);
printf("Initializer pointer: %p\n", &initializer);
printf("Initializer someFunction pointer: %p\n", (*initializer.vtbl)[0]);
printf("Actual someFunction pointer: %p\n", &someFunction);
printf("a value: %d\n", initializer.a);
}