// для указания конвенции вызова используется атрибут 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);
аналог объявления функции С++ в C#
В С# новичок. Хочу подгрузить функцию из динамической библиотеки.
пример описания этой функции есть на С++
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]);
Цитата: 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]);
[DllImport("C:\\TEMP\\IIDK\\IIDK\\Base\\LIB\\iidk.dll")]
public static extern bool Connect(string ip, string port, string id, [COLOR="red"](вот тут как callback функцию описать?)[/COLOR]);
Вам нужно использовать делегаты.
Код:
Замечу, что глупо использовать полные пути к DLL в DllImport.
Спасибо большое получилось, полный путь указываю пока просто для теста функций библиотеки, в итоге будет просто [DllImport("iidk.d ll")]