0

我试图.h在 .NET 语言(可能是 C#)中使用来自 Windows SDK 的“”文件,但没有成功。此标头通过 COM 公开一些 Windows Media 播放器功能。如果我使用 Win32 C++,我可以毫无问题地使用它,所以我认为我可以使用 Managed C++ 作为“桥梁”将其暴露给 C#。

头文件是subscriptionservices.h随 Windows Media Player SDK 11(Windows SDK 6 的一部分)提供的。

那可能吗?如何在 .NET 应用程序中使用该头文件?

谢谢,爱德华多·科布奇

4

6 回答 6

1

您可以使用 PInvoke 与 Win32 进行互操作。如果您尝试使用 COM 对象,您应该能够添加对项目的引用。你看过这篇文章吗?

更实际地,您需要了解您正在做的工作类型。如果您要进行大量指针运算,那么我建议您使用托管 C++。如果不是 C#。祝你好运。

于 2009-03-17T15:38:27.563 回答
1

如果您希望从头文件中使用特定的代码片段或类型,您可以将它们粘贴到 PInvoke Interop Assistant 并获取为您生成的 C# 代码。

http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=14120

于 2009-03-17T15:44:27.673 回答
0

尝试PInvoke。我认为您不能使用实际的标头,但您可以引用外部非托管 DLL 中的函数。

于 2009-03-17T15:37:07.613 回答
0

是的,有可能。P/Invoke 是你的朋友。使用此链接翻译标题。

平台调用数据类型

于 2009-03-17T15:38:23.320 回答
0

如果你走这条路,这可能会让你在 C++ 道路上领先一步。

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

请注意,WMP 接口有一些棘手的接口可用于 P/Invoke。对我来说,编写 C++ 包装器更容易。

于 2009-03-17T15:44:40.683 回答
0

如果 API 很简单,您可以使用 PInvoke,如果它很复杂,我建议使用 C++/CLI。这使您可以在托管世界和非托管世界之间建立一座“桥梁”。

于 2009-03-17T15:51:29.950 回答