DLLImport и CString
От: MihaDev Украина  
Дата: 13.01.09 17:01
Оценка:
Привет все!
Такая проблема: импорчу в C# плюсовую библу
Необходимо вызвать две функции. Одна из них в качестве параметров принимает две структуры
typedef struct
{
CString login;
CString password;
} LoginAPIStruct;

typedef struct
{
int loginStatus;
CString sessionID;
} LoginResultAPIStruct;

Вот аналоги этих структур на NET стороне
[StructLayout(LayoutKind.Sequential)]
public class LoginStruct
{
private string login;
private string password;

public string Login
{
get {return login;}
set {login = value;}
}

public string Password
{
get { return password; }
set { password = value; }
}
}

[StructLayout(LayoutKind.Sequential)]
public class LoginResultStruct
{
private int loginStatus;
private string sessionID;

public int LoginStatus
{
get { return loginStatus; }
set { loginStatus = value; }
}

public string SessionID
{
get { return sessionID; }
set { sessionID = value; }
}
}

импорчу и пытаюсь вызвать

[DllImport("SHCWebProxy.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int PB_Login([In, MarshalAs(UnmanagedType.LPStruct)] ref LoginStruct loginStruct, LoginResultStruct loginResultStruct);


LoginStruct loginStruct = GetCredential(login, pwd);
LoginResultStruct param = new LoginResultStruct();
PB_Login(ref loginStruct, param);

В итоге получаю
Attempted to read or write protected memory. This is often an indication that other memory is corrupt

Облазил все, перепробывал кучю всего, ниче не помагает. Кто нить поможет?
Буду очень благодарен!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.