Mon struct en C++ est le suivantJe suis en train de rassembler un struct de C à C#, pas sûr où commencer
/* this structure contains the xfoil output parameters vs angle of attack */
typedef struct xfoil_outputdata_struct
{
double *pAlfa;
double *pCL;
double *pCM;
double *pCDi;
double *pCDo;
double *pCPmax;
long nEntries;
} XFOIL_OUTPUT_DATA;
/* Here are the function prototypes for XFoil */
__declspec(dllexport) XFOIL_OUTPUT_DATA *xfoilResults(); /* get output from xfoil */
J'utilise XFoilResults pour tirer cette structure arrière en C#
Mon L'instruction DLL Imports est la suivante:
[DllImport("xfoilapi.dll")]
public static extern void xfoilResults();
Est-ce correct? Je n'ai aucun contrôle sur le code C++. J'ai juste besoin d'être capable de tirer la structure en C#. Le struct C# J'ai à ce jour est le suivant
[StructLayout(LayoutKind.Sequential)]
public struct xfoilResults
{
IntPtr pAlfa;
IntPtr pCL;
IntPtr pCM;
IntPtr pCDi;
IntPtr pCDo;
IntPtr pCPmax;
long nEntries;
}
Comment puis-je remplir cette structure C# avec les données à partir du code C++?
Quel est le scénario de déploiement? Si vous pouvez vous permettre un fichier .dll supplémentaire dans votre application, l'utilisation de C++/CLI pour ce genre de choses rendra votre vie beaucoup plus agréable. Il peut utiliser la définition de structure C++ directement via #include, utiliser la syntaxe C++ pour extraire les données, et les placer dans une série d'objets de tableau System :: Generic :: Collections :: List 'ou .NET (' cli :: array ') pour une utilisation ultérieure de C#. –