J'ai un struct C# pour représenter un vecteur cartésienne, quelque chose comme ceci:maréchal struct à un tableau non géré
public struct Vector
{
private double x;
private double y;
private double z;
//Some properties/methods
}
Maintenant, j'ai un dll non géré C que je dois appeler avec P/Invoke. Certaines méthodes attendent un double [3] paramètre.
La signature non géré C est quelque chose comme
void Cross(double a[3], double b[3], double c[3]);
Est-il possible de mettre en place une signature P/Invoke Je peux passer des instances de mon struct Vector et les rassembler de manière transparente à une double non géré [3]? J'aurais aussi besoin d'un marshaling bidirectionnel car la fonction non managée a besoin d'écrire la sortie dans le tableau d'arguments, donc je suppose que je devrais l'utiliser comme LpArray.
Ouch ... si simple! Cela a très bien fonctionné. Merci beaucoup – Pedro