Fråga : kalla C++-dll fungera från c#

Jag måste appellen en fungera som innehålls i en existerande dll som är skriftlig i c++, från min applikation att jag har skriftligt i problem för c#

My är den av parametrarna av det fungerar är en pekare till en strukturera & jag inte kan figurera a långt av att göra detta från c#.

The c++ fungerar prototypen är parametrar för

the för

int AVLÄGSNA PASCAL FunctionName (den Parameters* paramen) som Struct definieras som struct för


typedef {cp för
int; tb för
int;
int kartlägger [8];
dubblerar freq [8.16];
} Parametrar;

I har lyckat kallat dll fungerar genom att använda pekare, för men pekare strukturerar aldrig som innehåller arrays.

I har försökt efter c#code

struct Prameters
{cp för
int; tb för
int;
int [] kartlägger;
dubblerar [] freq;

and för
} jag har efter statisk elektricitet osäker extern int FunctionName (den Parameters* paramen) för fungeradeclaration

public; problemet för


My är att detta ger en sammanställningerror

Can för att inte ta tilltala av, att få storleksanpassa av, eller att förklara en pekare till en klarad av typ

If jag kommenterar ut samlingarna i structen som den sammanställer Ok - men naturligtvis den fungera ska fail
Any kommenterar skulle är mycket appreciated.

Thanks
" klar "

Svar : kalla C++-dll fungera från c#

Du kan försök följa kodifierar:
 [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        structparametrar
        {
            int-cp;
            int-tb;
            [MarshalAs (UnmanagedType.SysInt, SizeConst = 8)]
            int [] kartlägger;
            [MarshalAs (UnmanagedType.R8, SizeConst = 8)]
            freq för dubblett [];          
        }
        [DllImport (”MyDLL.Dll”)]
        offentlig extern statisk elektricitet int FunctionName (referens-parameterparam);
Andra lösningar  
 
programming4us programming4us