2012-04-19 2 views
0

У меня есть класс C#, который соединяется с dll, который работает хорошо.Импорт неуправляемого кода в delphi из C#

Теперь мне нужны те же функции в Delphi. что это лучший способ сделать это? Я не хочу писать все импорт снова в Delphi. есть способ импортировать C# класса в Дельфах или любой другой способ сделать это быстро и легко ..

Это одна функции в моем C# класса:

/// Return Type: ABS_STATUS->ABS_LONG->int 
    ///pszDsn: ABS_CHAR* 
    ///phConnection: ABS_CONNECTION* 
    [System.Runtime.InteropServices.DllImportAttribute("bsapi.dll", EntryPoint = "ABSOpen", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)] 
    public static extern int ABSOpen([System.Runtime.InteropServices.InAttribute()] [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string pszDsn, ref uint phConnection); 
+0

Native Delphi, или Delphi для .NET? –

+0

Да, это не dll .net, я думаю, его C++. как wold я импортирую его непосредственно в Delphi, мне нужно переписать все функции и функции в коде Delphi? – Ezi

+0

@ Jim Mischel Я использую Native Delphi версии 5 – Ezi

ответ

1

Это просто в Delphi:

function ABSOpen(pszDsn: PAnsiChar; var phConnection: Cardinal): Integer; 
    stdcall; external 'bsapi.dll'; 

У вас, несомненно, будет больше функций, чем это, но все они должны быть достаточно легкими. Если бы я был вами, я бы вернулся к исходному заголовочному файлу C++, который намного проще перевести, чем ваши p/invokes.

Я не думаю, что есть хороший инструмент для конвертирования p/invoke в блок импорта Delphi. Даже для заголовка C++ для Delphi я не уверен, что есть хороший универсальный инструмент. Вы можете посмотреть на JEDI project which has some useful resources, но, на мой взгляд, пришло время засучить рукава!

+0

У меня есть файл заголовка, есть ли какой-нибудь инструмент, который сделает для меня часть преобразования? – Ezi

+0

Я добавил ссылку на проект JEDI, который обладает отличными ресурсами и некоторыми инструментами, но я все же думаю, что вам будет лучше делать это вручную. Работа будет сделана лучше. –

+0

спасибо. одна вещь только .. что такое IntPtr в delphi? – Ezi

Смежные вопросы