我目前正在使用此DLL C:\ Windows \ System32 \ wmp.dll,我的代码是这样

WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayerClass();
wmp.URL = "SoundFile.wav";
wmp.controls.play();




并得到该错误我的代码有什么问题吗?我只是复制粘贴在代码项目中搜索时看到的代码

最佳答案

如错误消息所述,“嵌入互操作类型”功能不支持嵌入类,而仅支持接口。非常容易修复,只需从标识符名称中删除“类”即可。因此,您可以使用“适用的接口”。固定:

  var wmp = new WMPLib.WindowsMediaPlayer();
  wmp.URL = "SoundFile.wav";
  wmp.controls.play();


是的,这实际上是合法的,您可以创建接口的实例。 COM是不同的:)这种看似怪异的魔术是由WindowMediaPlayer接口上的[CoClass] attribute实现的。它告诉C#编译器需要创建哪些COM类来提供该接口。

COM是非常纯的基于接口的编程范例。该类的实现从不公开,只需要一个简单的工厂即可创建实例。引擎盖下的CoCreateInstance()。与之交谈只能通过接口进行。就像您所用的WindowMediaPlayer接口一样。

关于c# - WMPLib DLL错误中播放声音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25241032/

10-12 07:15