Вы не можете вызвать эту функцию DLL, потому что она использует специфичный для Delphi тип данных string
, который не имеет эквивалента в продуктах не-Embarcadero. (Даже если ваш код C # может соответствовать структуре строкового типа Delphi, вам также необходимо выделить память с помощью диспетчера памяти DLL, который он почти наверняка не экспортирует.)
Если у вас есть возможность изменить DLL, тогда параметры должны иметь тип PAnsiChar или PWideChar. (Из вашей декларации C # похоже, что вы хотите PAnsiChar.) Это то, что DLL должна была использовать все время.
Если вы не можете изменить DLL, то напишите DLL-оболочку в Delphi или C ++ Builder, которая использует PAnsiChar или PWideChar, а затем перенаправьте эти параметры в исходную DLL-библиотеку Delphi. Или громко пожаловаться поставщику DLL и запросить новую версию, которая использует типы, более дружественные для других языков.