Вы не можете вызвать эту DLL из C #.Основная проблема - два обратных вызова of object
.В C # нет способа соответствовать этому.Вам нужно будет изменить существующую DLL или добавить промежуточный адаптер DLL.В настоящее время ваша DLL доступна только из Delphi или C ++ Builder.
Если вы можете изменить DLL, то вам нужно будет удалить of object
.Если вам нужен обратный вызов для работы с экземпляром, вам нужно будет передать экземпляр в качестве параметра.Тем не менее, делегаты C # могут прозрачно обернуть все это, так что вам нужно будет только передать экземпляр в качестве параметра, если вы хотите, чтобы DLL была доступна из других языков, например Delphi.
Другая проблема - открытый массивпараметр.Это также не легко получить доступ с других языков.Хотя есть трюки , я бы рекомендовал передавать ссылку на первый элемент, а не открытый массив.Открытые массивы уникальны для Delphi.
Я также не понимаю, почему вы используете тип byte
для хранения длины массива.Вы должны использовать Integer
для этого.Использование байта ничего не дает, и вы просто приглашаете переполнение.Кроме того, MainWindowHandle
не должно быть THandle
в Delphi.Это должно быть HWND
.
Я бы порекомендовал вам изменить библиотеку DLL, чтобы иметь интерфейс, совместимый с C, и, таким образом, он был доступен со всех языков, которые это поддерживают.На практике это сделает его доступным для всех основных языков программирования.