Доброе время суток!
Только осваиваю С#.
Есть задача импортировать функцию из dll, написанной на С++.
Заголовок функции выглядит так
typedef int SDAP_STATUS;
DLLFUNC SDAP_STATUS SDAP_OpenSession(char* pszIP, WORD nPort, DWORD* pSessionID);
Импортирую так
[DllImport("DataClient.dll", EntryPoint = "SDAP_OpenSession", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
internal static extern int SDAP_OpenSession(
[In][MarshalAs(UnmanagedType.LPStr)]string pszIP,
[In] short nPort,
[Out] out int pSessionID);
Использую в коде так
int session_id;
int i = SDAP_OpenSession("127.0.0.1", 11111, out session_id);
Все хорошо на удаленном хосте сессия открывается, но после SDAP_OpenSession
программа вылетает со словами "Программа vshost.exe не работает" (походу крашинг)
Вопрос: почему? может я не правильно импортировал?
Раньше тоже самое писал на Delphi — все работало. Но была XP.
Сейчас Win7, VS2008.