Questione : chiamata della funzione del DLL di C++ da c#

Devo denominare una funzione contenuta in un DLL attuale scritto in c++, dalla mia applicazione che ho scritto nel problema del c#

My sono quell'dei parametri di quella funzione sono un indicatore ad una struttura & non posso calcolare un senso di fare questo da c#. il prototipo di funzione del

The c++ è parametri che LONTANI del

the di FunctionName di PASCAL del

int (param di Parameters*) Struct è definito come struct del


typedef {cp del
int; TB del
int; programma del
int [8]; doppio freq del
[8.16];
} Parametri; il

I ha denominato con successo le funzioni del DLL using gli indicatori prima che ma gli indicatori alle strutture che contengono arrays.

I non avessero provato mai il seguente code


struct Prameters
{cp del c# del
int; TB del
int; programma del
int []; freq del doppio del
[];

and del
} ho il seguente declaration

public il int extern pericoloso statico FunctionName (param di funzione di Parameters*); il problema del


My è che questo dà un error

Can della compilazione per non prendere l'indirizzo di, ottenere il formato di, o dichiarare un indicatore ad un tipo diretto il

If commento fuori gli allineamenti nello struct che compila bene - ma naturalmente la funzione osservazioni del fail

Any sarebbe molto appreciated.

Thanks
class= del

Risposta : chiamata della funzione del DLL di C++ da c#

Potete provare seguite il codice:
 [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        parametri dello struct
        {
            cp di int;
            TB di int;
            [MarshalAs (UnmanagedType.SysInt, SizeConst = 8)]
            programma di int [];
            [MarshalAs (UnmanagedType.R8, SizeConst = 8)]
            freq del doppio [];          
        }
        [DllImport (“MyDLL.Dll„)]
        elettricità statica extern pubblica int FunctionName (param di parametri di riferimento);
Altre soluzioni  
 
programming4us programming4us