Vale, había que probar
Aunque eso tampoco funcione, si no te da errores de compilación ni de otro tipo, yo lo dejaría porque por el enlace que he puesto antes yo diría que es la forma en que tiene que ser.
Lo único que se me ocurre es que el puntero vaya a la zona de datos del programa al introducir la cadena como una constante y que por eso dé error. Es posible que la dll no tenga permiso para acceder a esa región de memoria, aunque es posible también que no tenga permiso para acceder a ninguna región de memoria del programa y tengas que usar sockets, pipes o algo parecido, no sé exactamente cómo funcionan los permisos con las dlls.
Así que puedes probar a hacer un malloc y strncpy para guardar la cadena en una región de memoria del heap, que será lo que te dé el malloc. Si eso no funciona puedes probar a usar memoria compartida y si no funciona o no quieres la última alternativa serían sockets, pipes o el mecanismo de comunicación entre procesos que prefieras. En este último caso la llamada iría sin argumentos.
-Freeze-, ¿has mirado el link que ha dado
Hendrix.?