2009-03-17 6 views
0

J'ai essayé d'utiliser un fichier ".h" de Windows SDK dans un langage .NET (peut-être C#), mais sans succès. Cet en-tête expose certaines fonctionnalités du lecteur Windows Media via COM. Si j'utilise Win32 C++, je peux l'utiliser sans problèmes, donc j'ai pensé que je pourrais utiliser Caged Managed comme un "Bridge" pour l'exposer à C#.Utilisation d'un en-tête C++ avec le langage .NET

Le fichier d'en-tête est le subscriptionservices.h fourni avec Windows Media Player SDK 11 (partie de Windows SDK 6).

Est-ce possible? Comment pourrais-je utiliser ce fichier d'en-tête dans une application .NET?

Merci, Eduardo Cobuci

+0

Alors, quelle est la question? –

+0

Est-ce possible? Comment pourrais-je utiliser ce fichier d'en-tête dans une application .NET? Merci! –

Répondre

1

Vous pouvez utiliser PInvoke à Interop avec Win32. Si vous essayez d'utiliser un objet COM, vous devriez pouvoir ajouter une référence au projet. Avez-vous regardé this article?

Plus concrètement, vous devez comprendre le genre de travail que vous faites. Si vous allez faire beaucoup de calcul arithmétique alors je vous recommande de gérer C++. Si ce n'est pas C#. Bonne chance.

+0

Était sur le point d'écrire la chose COM, donc +1 pour vous à la place. Le fichier d'en-tête est définitivement COM. – OregonGhost

+0

Ouais ... COM Interop est extrêmement utile car de nombreuses API microsoft sont exposées en tant qu'objets COM. –

+0

Je souhaite OpenGL ES était COM - alors ce ne serait pas un tel cauchemar pour l'utiliser à partir de. NET;) Eh bien. – OregonGhost

0

Essayez PInvoke. Je ne pense pas que vous pouvez utiliser l'en-tête réel, mais vous pouvez référencer des fonctions dans des DLL externes non gérées.

0

Cela pourrait vous donner un bon départ sur le chemin C++, si vous allez de cette façon.

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

Notez que l'interface WMP a des interfaces difficiles à P/Invoke dans. Pour moi, il est plus simple d'écrire un wrapper C++.

0

Si l'API est simple, vous pouvez utiliser PInvoke, si c'est compliqué, je suggère d'utiliser C++/CLI. Cela vous permet de créer un «pont» entre le monde géré et le monde non géré.

Questions connexes