Падение программы при вызове функции из DLL

Что то я не увидел отличий. А менять местами пробовали

По идее и первый вызов не должен работать. Обычно в DLL не строку передают, а указатель на строку (массив байт). Вначале надо зарезервировать строковую переменную нужной длины, а потом ей присвоить уже этот массив байт.

Почитайте по теме VB и возврат строки из DLL.

От этого сообщения яснее не стало. Вы бы лучше расшифровку отчета показали.