Использование unmanaged DLL из C#
От: DrL  
Дата: 20.07.03 11:11
Оценка:
Уважаемые, вот столкнулся с такой проблемой: требуется на C# вызвать
функцию, реализованную в DLL, НО DLL написана на Delphi!!!
MSDN читал, MessageBox вызывать научился
Проблема IMHO в передаче параметров. Установлено опытным путем, что для
паскалевской функции
function Test(var a:integer) : integer;export;
begin
Result := a;
end;
при вызове ее так
[DllImport("mydll", CallingConvention = CallingConvention.StdCall)]
public static extern int Test(int a);
Результатом является всегда одно и тоже число, причем независипо от
CallingConvention и передачи параметра ref или [In, Out].
Но это все цветочки, а вот ягодки здесь: функция, которую надо вызвать такая:
function LInv(var n : integer; //размер динамических массивов
var dReIn : array of double;//динамический массив (вход)
var dImIn : array of double;//динамический массив (вход)
var dReOut : array of double;//динамический массив (выход)
var dImOut : array of double//динамический массив (выход)
) : integer;export;

Если не понятно, то Функция обрабатывает первые два массива и записывает значения
во вторые два массива. Результат функции — код ошибки. Если вызывать из
Delphi, то все работает отлично.

Подскажите, если кто сталкивался, как можно такую функцию на C# вызвать.
Я уже много всяких вариантов перепробовал,
осталось только исполнить танец с бубном вокруг компьютера — авось заработает.
(Переписать функцию не предлагать, это физически невозможно!)

Leonid, Dr-L@yandex.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.