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?

Reply via email to