Avatar billede simonhb Praktikant
15. marts 2012 - 15:42 Der er 2 kommentarer

API kald til DLL med pointer til array af structs som parameter

Jeg har et C++ program der kalder en DLL.
Jeg vil gerne kalde DLL'en fra C#. Det giver mig dog lidt problemer, da der skal henvises til en "struct" som jeg har lidt svært med at oprette i C# og få passeret den rigtigt.

C++ programmet kalder DLLen med følgende:

BOOL APIENTRY EnumDevices(LPDWORD, DWORD, LPVOID, DWORD, LPDWORD, LPDWORD);



Det som c++ programmet passerer i EnumDevices' 3. parameter er memoryadressen på et array af structs af typen DSERVER, som ser således ud:

typedef struct _DSERVER
{
BYTE bAddr[6];
DWORD dwIp;
char szType[16]
} DSERVER, *LPDSERVER;




Hvordan gør jeg dette i C#?
Avatar billede arne_v Ekspert
15. marts 2012 - 15:49 #1
Flere mulighder:

1) glue mixed mode C++ kode

2) allocate unmanaged memory og kald med IntPtr til dette

3) klister nok med attributter paa et C# array af struct til at marshalleren kan klare det
Avatar billede simonhb Praktikant
16. marts 2012 - 16:57 #2
Det lykkedes langt om længe at få lavet structen rigtig og marshalle det, så jeg fik det ønskede resultat.

Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester