使用 C++ .NET 语言标头

发布于 2024-07-14 18:31:00 字数 336 浏览 18 评论 0原文

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

头文件是 Windows Media Player SDK 11(Windows SDK 6 的一部分)附带的 subscriptionservices.h

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

谢谢, 爱德华多·科布奇

I trying to use a ".h" file from Windows SDK in a .NET language (maybe C#), but without success. This header exposes some Windows Media player functionality through COM. If I use Win32 C++, I can use it with no problems, so I thought that I could use Managed C++ as a "Bridge" to expose it to C#.

The header file is the subscriptionservices.h that comes with Windows Media Player SDK 11 (part of Windows SDK 6).

Is that possible? How could I use that header file in a .NET Application?

Thanks,
Eduardo Cobuci

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

新人笑 2024-07-21 18:31:01

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

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

You can use PInvoke to Interop with Win32. If you are trying to use a COM object you should be able to add a reference to the project. Have you looked at this article?

More practically you need to understand the kind of work that you are doing. If you are going to be doing lots of pointer arithmetic then I would recommend managed c++. If not C#. Good luck.

末蓝 2024-07-21 18:31:01

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

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

If there is a particular snippet of code or types that you are looking to use from the header file, you can paste them into the PInvoke Interop Assistant and get the C# code generated for you.

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

初雪 2024-07-21 18:31:01

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

Try PInvoke. I don't think you can use the actual header, but you can reference functions in external unmanaged DLLs.

烟织青萝梦 2024-07-21 18:31:01

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

平台调用数据类型

Yes - it is possible. P/Invoke is your friend. Use this link to translate the headers.

Platform Invoke Data Types

救赎№ 2024-07-21 18:31:01

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

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

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

This might give you a head start on the C++ path, if you go that way.

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

Note that the WMP interface has some tricky interfaces to P/Invoke into. For me, it's easier just to write a C++ wrapper.

我的黑色迷你裙 2024-07-21 18:31:01

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

If the API is simply you can use PInvoke, if it's complicated I would suggest using C++/CLI. This allows you to create a 'bridge' between the managed and the unmanaged world.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文