Hi Liste,
nochmal ich und wieder 'n pointer problem:
Ich muss ne C Funktion aufrufen die folgendermaßen aussieht:

INT2 GetGuidanceInformation(const TGPSData * GPSData, INT4 forecast, 
TSDKNavigationInformation * &NavigationInformation);

wichtig dabei ist der letzte Parameter!
Das ist ein struct das ich in c# folgendermaßen "portiert" habe (gekürzt):

[StructLayout(LayoutKind.Sequential)]
unsafe public struct TSDKNavigationInformation
{
        public System.UInt32 size;                                                     
 ///< size of the structure - for controlling
        public System.UInt16 version;                                           ///< 
version of the structure - for controlling
        
        //hier wirds kritisch!!
        public System.UInt32[] PreviousManover; ///< 
        
        [..]
                
}


mein DLLImport sieht so aus:

[DllImport("NavigationSDK")]
unsafe private extern static int GetGuidanceInformation(TGPSData * GPSData, 
System.Int32 forecast, ref TSDKNavigationInformation * NavigationInformation);


und mein Code folgendermaßen:

private unsafe void btnCalcRoute_Click(object sender, System.EventArgs e)
{
        TSDKNavigationInformation NavInfo = new TSDKNavigationInformation();
        [..]
        TSDKNavigationInformation * pNavInfo = &NavInfo;
        [..]
        GetGuidanceInformation(null, 0, ref pNavInfo);                  
}

Leider bricht er da dann immer mit der Fehlermeldung:
"Eine nicht behandelte Ausnahme des Typs 
'System.Runtime.InteropServices.MarshalDirectiveException' ist in 
NavigationSDK.Demo.exe aufgetreten.

Zusätzliche Informationen: parameter #3 kann nicht gemarshallt werden: Zeiger können 
nicht auf gemarshallte Strukturen verweisen. Verwenden Sie stattdessen byref."

Und genau da hängt's bei mir jetzt. Wie krieg ich das hin, dass er mein array 
marshallt und zwar so dass ich es dann auch noch als pointer übergeben kann?!?
Bin leider schon kurz vorm verzeifeln weil's nicht hinhauen will.

Oder hat jemand noch eine gute Übersicht über .NET Marshalling, weil das ist mir alles 
nicht so 100% klar was ich da jetzt verwenden soll (welcher UnmanagedType, In Out 
Parameter....)

Danke schonmal für Eure Hilfe!

Gruß
Tobias :-)
_______________________________________________
Framework.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/framework.net

Antwort per Email an