Предположим, у меня есть структура:
typedef struct {
float x;
float y;
float z;
int ID;
} Vertex;
и функция C ++:
float first(Vertex* ptr, int length){ //really silly function, just an example
Vertex u,v;
u.x = ptr[0].x; //...and so on, copy x,y,z,ID
v.x = ptr[1].x;
return (u.x * v.x + u.y * v.y + u.z * v.z);
}
Vertex* another(float a, int desired_size){
Vertex v = (Vertex*)malloc(desired_size*sizeof(Vertex));
v[0].x = a;
v[1].x = -a; //..and so on.. make some Vertices.
return v;
}
Сначала - моя IDE. Я использую Visual Studio 2010, создаю приложение на C # (4.0); Часть C ++ также встроена в VS2010.
Я знаю, как создать DLL кода C / C ++ и использовать его в приложении C #, но до сегодняшнего дня я использовал только примитивные аргументы и возвращаемые значения, например:
[DllImport("library.dll", CharSet = CharSet.Ansi, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
public static extern int simple(int a, int b);
Сегодня мне нужно передать массив of структур (как в примере выше) .. и, возможно, также получить обратно ..
Как "перевести" класс C # в структуру C (и наоборот) ??