Witam serdecznie, jak w temacie chciałbym w c# móc odczytać dane zapisane w strukturze która to znajduję się w dllce napisaną w c++, która to jest w postaci:
struct MyInfo
{
int Number;
char *Name;
};
w C# mam:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct MyInfo
{
public int Number;
[MarshalAs(UnmanagedType.LPStr)]
public string Name;
}
kod funkcji macierzystej :
void getInfo( int id, MyInfo *info)
{
Student *stud;
int status = getStudent(id,stud);
if(!status)
info -> Number = stud->index;
info -> Name = stud -> name;
}
natomiast wywołanie dll wygląda następująco:
internal const string DLLka = "Testdllki.dll";
[DllImport(DLLka,EntryPoint="getStruct")]
public extern static void getStruct(MyInfo myI);
I to nie działa, tak jak bym chciał, działa w przypadku jeśli tylko chce przesłać same wartości liczbowe, natomiast przy pojawieniu się jakimkolwiek znaku typu char, char*, czy char[] program albo wyrzuca wyjątek, albo zwraca null'a