Thanks for the suggestions! I think then I will stay with a wrapping struct. How would I make the extern C functions invisible for other sources?
extern (C) c_ulong loadFont(char * path); extern (C) void render(c_ulong font, char * text); extern (C) void destroyFont(c_ulong font); struct Font { private: c_ulong ptr; public: this(string path) { ptr = loadFont(path.toStringz()); } void render(string text) { render(ptr, text.toStringz()); } ~this() { destroyFont(ptr); } } When released as a library I would simply not put them in the di Files, but I do not really want to use di-s for developing the lib, but generate them for release. Can I declare these extern C functions inline the methods using it?