Frage

Gibt es eine Möglichkeit (Referenz) eine DLL in einer nicht verwalteten C geschrieben ++ zu verwenden (keine COM-Bibliothek) in meiner C # -Anwendung?

Wenn ich versuche, es zu verweisen in Visual Studio, ich ‚nicht eine COM-Objekt‘ Fehlermeldung an.

Vielleicht gibt es eine Art Übersetzer \ Router, die meine DLL Referenz COMify würde? Ich habe keine Ahnung, wie COM und COM-Interop-Arbeit, da ich die Programmierung begonnen, wenn das für mich schon unnötig war.

Danke.

War es hilfreich?

Lösung

Sie müssen das DllImport Attribut verwenden. Hier ist ein Beispiel für die Win32-Funktion Postmessage:

[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool PostMessage(IntPtr handle, int message, IntPtr wparam, IntPtr lparam);

Andere Tipps

Siehe " Verbrauchen nicht verwaltete DLL-Funktionen " Thema auf MSDN:

http://msdn.microsoft.com/en-us/library /26thfadc.aspx

Es gibt keine Notwendigkeit, all COM-Proxy hinzufügen, kann .NET-DLLs verbraucht direkt das mit [DllImport] Attribute. Sie haben auch die volle Kontrolle über die Rangierung zwischen .NET und nicht verwaltete DLL durch zusätzliche Attribute angeben.

Joe bereits beantwortet diese, so dass ich dies auf dem Gehen heften - sich etwas Zeit zu sparen und nicht zu graben und mit mangle Funktionssignaturen, P / Invoke hat eine ziemlich vollständige Bibliothek von Win32 Signaturen in Form von sowohl ein Wiki und ein Visual Studio-Plugin!

Überprüfen Sie es heraus unter P / Invoke

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top