Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

аналог объявления функции С++ в C#

69K
27 сентября 2011 года
l2qwe
13 / / 27.09.2011
Добрый день.
В С# новичок. Хочу подгрузить функцию из динамической библиотеки.
пример описания этой функции есть на С++
BOOL Connect(LPCTSTR ip, LPCTSTR port, LPCTSTR id, void (_stdcall *func)(LPCTSTR msg))

в C# я пробую так:
[DllImport("C:\\TEMP\\IIDK\\IIDK\\Base\\LIB\\iidk.dll")]
public static extern bool Connect(string ip, string port, string id, [COLOR="red"](вот тут как callback функцию описать?)[/COLOR]);
5
27 сентября 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: l2qwe
в C# я пробую так:
[DllImport("C:\\TEMP\\IIDK\\IIDK\\Base\\LIB\\iidk.dll")]
public static extern bool Connect(string ip, string port, string id, [COLOR="red"](вот тут как callback функцию описать?)[/COLOR]);


Вам нужно использовать делегаты.

 
Код:
// для указания конвенции вызова используется атрибут UnmanagedFunctionPointer
// конвенция stdcall используется по-умолчанию, потому он не требуется
public delegate void ConnectCallback(string message);

[DllImport("C:\\TEMP\\IIDK\\IIDK\\Base\\LIB\\iidk.d ll")]
public static extern bool Connect(string ip, string port, string id, ConnectCallback callback);

Замечу, что глупо использовать полные пути к DLL в DllImport.
69K
27 сентября 2011 года
l2qwe
13 / / 27.09.2011
Спасибо большое получилось, полный путь указываю пока просто для теста функций библиотеки, в итоге будет просто [DllImport("iidk.d ll")]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог