What is the prototype (call signature) of the DMD function you are trying to call?
If it is something like:
void do_something (const char *);
you would just pass in a normal array or pointer to a character, and the compiler will automatically convert from char */char  to const char *. What a const pointer means in terms of a function prototype, is the compiler can assume that the memory that the pointer points to is not modified in the function.
extern void do_something (const char *);
extern char array;
void test (char *p)
When you have a const declaration of a scalar or array, you must initialize it at that point, and the compiler is free for instance to put the variable into read-only memory.
Now, going the other way (from a const pointer to normal pointer) is a type error, and you will need a suitable cast. Even if you do convert the pointer, it is illegal to actually modify what the pointer points to.