Windows媒体播放器设计者的查看投掷CPU和lib错误(Windows Media Player

2019-10-24 14:02发布

我有一个名为VideoForm形成具有的Windows Media Player播放器叫。

public AxWMPLib.AxWindowsMediaPlayer player;

当我打开VideoFrame.cs [设计]我得到两个错误:

找不到类型“AxWMPLib.AxWindowsMediaPlayer”

变量“球员”要么是未声明或从未分配。

如果我创造我的解决方案的新形式,并尝试将Windows媒体播放器添加到它,我得到这个错误:

无法创建组件“AxHost”错误消息如下所示:“System.Reflection.ReflectionTypeLoadException:无法加载所请求的类型的一个或多个。

(具有下文基本上达列出一吨的类型“的东西工具箱需要做出控制”)

我曾尝试 :重新启动Visual Studio中,重新启动我的电脑,删除并重新导入库,切换到32楼,再切换回64楼一遍,发现手工我的机器上的lib文件。

但这里有一个奇怪的部分-如果我关闭这个解决方案,打开另一个,添加Windows媒体播放器,编译成64位,然后关闭并重新打开原来的解决方案,我不明白的错误!
编辑:然而,我得到了以下两个错误,当我尝试上面的“黑客”:

从道路警告处理COM引用 “WMPLib” “C:\ WINDOWS \ SYSTEM32 \的Wmp.dll”。 类型库导入遇到了类型“WMPLib.IWMPNowPlayingHelperDispatch”属性的getter“sessionPlaylistCount”没有一个有效的返回类型。 进口商将尝试导入该物业作为替代的方法。

    and 

处理COM引用 “WMPLib” 从路径为 “C:\ WINDOWS \ SYSTEM32 \的Wmp.dll”。 至少对于“IWMPGraphEventHandler.NotifyAcquireCredentials”的一个参数不能由运行时封送编组。 这种参数将因此作为指针被传递,并且可能需要不安全代码来操纵。

我想我得到了内存泄漏,但很茫然,我看在任何线程或GPU线程窗口没有在运行。

我不相信这是我的代码,是造成这一点,但是如果你想看到的代码注释,我将添加相关部分。

Answer 1:

我发现解决这个问题:

{
Warning 1 Processing COM reference "WMPLib" from path "C:\Windows\system32\wmp.dll". Type library importer encountered a property getter 'sessionPlaylistCount' on type 'WMPLib.IWMPNowPlayingHelperDispatch' without a valid return type. The importer will attempt to import this property as a method instead.

Warning 2 Processing COM reference "WMPLib" from path "C:\Windows\system32\wmp.dll". At least one of the arguments for 'IWMPGraphEventHandler.NotifyAcquireCredentials' cannot be marshaled by the runtime marshaler. Such arguments will therefore be passed as a pointer and may require unsafe code to manipulate.
}

我必须编辑我的话! 如果您收到这些错误,这并不意味着您的应用程序将无法运行,但如果您编译程序不会在Windows旧运行安装文件可以设置如下:你的程序框架设置为4的客户端版本和你的程序的平台设置X86和创造你的框架4客户机上安装



文章来源: Windows Media Player Designer View throwing CPU and lib errors