02. december 2003 - 10:35Der er
10 kommentarer og 1 løsning
Unmanaged Array
Jeg ønsker at sende et integerArray til en c++ dll-fil.
Her er mit import eksempel: [DllImport("cfrontWrapper.dll")] public static extern bool setCurrentKey([MarshalAs(UnmanagedType.I4)]int hTable, [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VT_I4)] int[] ar);
Jeg får følgende fejl ved kompilering: C:\MyWork\CSharp\Tidsur\functionTest\CFrontWrapper.cs(225): The name 'VT_I4' does not exist in the class or namespace 'functionTest.CFrontWrapper'
PointerVærdien ligges i en IntPtr-type som er en pointer. Dernæst skal man med Marshal oversætte den til en type som .NET understøtter. Ved returnering af char* kan følgende gøres i .NET: IntPtr ptr = getFieldDataString(hTable, hRec, fieldName); string data = Marshal.PtrToStringAnsi(ptr);
Jeg kan bare ikke lige finde en tilsvarende løsning for pointer til arrays (long*)
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.