ImportDLL C#
От: TObject Россия  
Дата: 25.03.10 15:34
Оценка:
Доброе время суток!

Только осваиваю С#.

Есть задача импортировать функцию из 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.