В моем приложении C # .Net я использую C ++ DLL с DllImport.
C ++ DLL содержит определение перечисления:
enum mode { A, B, C };
class myClass {
char name[512];
mode myMode; //variables beneath this line cause crash
char pass[512];
};
Я определил то же enum
в своем приложении C # .Net:
public enum mode { A, B, C };
Теперь, если я получаю доступ к переменной myclass
, определенной после строки myMode
, я получаю ошибку повреждения памяти:
getName(); //ok
getPass(); //error
extern "C" LPCTSTR FAR PASCAL EXPORT getPass() { return myC->pass; }
Оболочка C #:
[DllImport(DLLNAME)]
public static extern string GetPass();
В качестве обходного пути я использую int
как тип для myMode
, и все работает.Но мне любопытно, как это сделать правильно.