2009-03-17 10 views
0

Ich versuche, eine ".h" -Datei von Windows SDK in einer .NET-Sprache (möglicherweise C#) zu verwenden, aber ohne Erfolg. Dieser Header macht einige Windows Media Player-Funktionen über COM verfügbar. Wenn ich Win32 C++ benutze, kann ich es ohne Probleme verwenden, also dachte ich, dass ich Managed C++ als "Bridge" verwenden könnte, um es C# verfügbar zu machen.Verwenden eines C++ - Headers mit .NET-Sprache

Die Header-Datei ist die subscriptionservices.h, die mit Windows Media Player SDK 11 (Teil von Windows SDK 6) geliefert wird.

Ist das möglich? Wie könnte ich diese Header-Datei in einer .NET-Anwendung verwenden?

Danke, Eduardo Cobuci

+0

Also, was ist die Frage? –

+0

Ist das möglich? Wie könnte ich diese Header-Datei in einer .NET-Anwendung verwenden? Vielen Dank! –

Antwort

1

Sie können PInvoke auf Interop mit Win32 verwenden. Wenn Sie versuchen, ein COM-Objekt zu verwenden, sollten Sie in der Lage sein, einen Verweis auf das Projekt hinzuzufügen. Haben Sie sich this article?

angesehen Praktisch müssen Sie die Art von Arbeit verstehen, die Sie tun. Wenn Sie viel Pointer-Arithmetik machen, würde ich Managed C++ empfehlen. Wenn nicht C#. Viel Glück.

+0

War im Begriff, das COM-Ding zu schreiben, also +1 für Sie stattdessen. Die Header-Datei ist definitiv COM. – OregonGhost

+0

Ja ... COM-Interop ist sehr nützlich, da viele Microsoft-APIs als COM-Objekte verfügbar gemacht werden. –

+0

Ich wünschte, OpenGL ES wäre COM - dann wäre es nicht so ein Albtraum, es von .NET zu verwenden;) Nun. – OregonGhost

0

PInvoke Versuchen. Ich glaube nicht, dass Sie den eigentlichen Header verwenden können, aber Sie können Funktionen in externen nicht verwalteten DLLs referenzieren.

0

Dies könnte Sie geben einen Kopf auf dem C++ starten Pfad, wenn Sie diesen Weg gehen.

http://code.msdn.microsoft.com/wmpinterop

Beachten Sie, dass die WMP-Schnittstelle einige knifflige Schnittstellen zu P hat/Invoke in. Für mich ist es einfacher, einen C++ - Wrapper zu schreiben.

0

Wenn die API einfach ist, können Sie PInvoke verwenden, wenn es kompliziert ist, würde ich vorschlagen, C++/CLI zu verwenden. Auf diese Weise können Sie eine "Brücke" zwischen der verwalteten und der nicht verwalteten Welt erstellen.

Verwandte Themen