За исключениями чистой DLL не разрешается пересекать границу DLL (как упоминает Deltics ) - независимо от того, на каком языке.
Вы получаете всевозможные проблемы там , особенно потому, что вы не знаете, какой язык, RTL, менеджер памяти и т. Д. Находятся по обе стороны границы.
Итак, вы вернулись к классической парадигме обработки ошибок:
Вместо DLL вы можете использовать пакеты BPL (как предложено Lars ): там вы знаете, что обе стороны будут использовать один и тот же RTL и диспетчер памяти.
И пакеты, и BPL обычно все равно дают вам кошмар версионирования (слишком много степеней свободы).
Более строгое решение - использовать монолитный исполняемый файл; это решает обе проблемы:
- намного более легкая версия
- гарантированно только один RTL и диспетчер памяти
- Йерун
PS: я сделал это дополнительным ответом, потому что это облегчает вставку ссылок.