Windows媒体播放器设计器视图抛出CPU和库错误
本文关键字:CPU 错误 视图 媒体播放器 Windows | 更新日期: 2023-09-27 18:06:30
我有一个名为VideoForm的表单,它有一个名为Player的Windows Media Player。
public AxWMPLib.AxWindowsMediaPlayer player;
当我打开videofframe .cs [Design]我得到两个错误:
找不到"AxWMPLib"类型。AxWindowsMediaPlayer '
变量'player'要么未声明,要么从未赋值。
如果我在我的解决方案中创建一个新窗体并尝试添加Windows Media Player,我得到这个错误:
创建组件'AxHost'失败,错误信息如下:system . reflection . reflectiontypeloadeexception:无法加载一个或更多请求的类型。
(下面列出了大量的类型,基本上相当于"工具箱需要制作控件的东西")
我已经尝试了:重新启动Visual Studio,重新启动计算机,删除并重新导入库,切换到32,构建,然后切换回64并再次构建,并手动在我的机器上查找lib文件。
但这里是奇怪的部分-如果我关闭这个解决方案,打开另一个,添加Windows媒体播放器,编译到64位,然后关闭并重新打开原始解决方案,我没有得到错误!
编辑:然而,当我尝试上述"黑客"时,我确实得到了以下两个错误:
警告处理COM参考"WMPLib"从路径"C: ' Windows ' system32系统' wmp.dll"。类型库导入器遇到属性getter 'sessionPlaylistCount'在类型"WMPLib。IWMPNowPlayingHelperDispatch'没有有效的返回类型。导入器将尝试将此属性作为方法导入。
和
处理COM参考"WMPLib"从路径"C: ' Windows ' system32系统' wmp.dll"。至少有一个论点"IWMPGraphEventHandler。不能封送notifyacquirecredential运行时封送程序。因此,这些参数将被传递为指针,可能需要不安全的代码来操作。
我想我正在获得内存泄漏,但我不知所措,我在线程或GPU线程窗口的运行时看不到任何东西。
我不相信这是我的代码造成的,但是如果你想看到代码注释,我会添加相关的部分。
我找到了解决这个问题的方法:
{
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客户端上创建安装程序。