Windows Media Player Designer查看抛出CPU和lib错误

时间:2015-08-05 21:15:35

标签: c# memory-leaks windows-forms-designer wmp

我有一个名为VideoForm的表单,它有一个名为player的Windows Media Player。

f3 <- function(n=3, ...){
    lapply(1:2, function(i, ...) mapply(rnorm, MoreArgs=list(n=n), ...), ...)
}
f3(mean=mus, sd=sds)

当我打开VideoFrame.cs [Design]时,我收到两个错误:

  

找不到类型&#39; AxWMPLib.AxWindowsMediaPlayer&#39;

     

变量&#39;播放器&#39;未申报或未分配。

如果我在我的解决方案中创建一个新表单并尝试向其添加Windows Media Player,我会收到此错误:

  

无法创建组件&#39; AxHost&#39;错误消息如下:   &#39; System.Reflection.ReflectionTypeLoadException:无法加载一个或   更多要求的类型。

(下面列出的大量类型基本上等于&#34;工具箱需要制作控件的东西&#34;)

我试过:重新启动Visual Studio,重新启动计算机,删除并重新导入库,切换到32,构建,然后切换回64并再次构建,并手动查找lib我机器上的文件。

但是这里有一个奇怪的部分 - 如果我关闭此解决方案,打开另一个,添加一个Windows Media Player,编译为64位,然后关闭并重新打开原来的解决方案我不会# 39;得到错误!
编辑:但是当我尝试上述&#34; hack&#34;时,我确实得到以下两个错误:

  

警告处理COM参考&#34; WMPLib&#34;从路径   &#34; C:\ Windows \ System32下\的Wmp.dll&#34 ;.类型库导入器遇到了   属性getter&#39; sessionPlaylistCount&#39;在类型上   &#39; WMPLib.IWMPNowPlayingHelperDispatch&#39;没有有效的退货类型。   导入器将尝试将此属性作为方法导入。

public AxWMPLib.AxWindowsMediaPlayer player;
  

处理COM参考&#34; WMPLib&#34;从路径   &#34; C:\ Windows \ System32下\的Wmp.dll&#34 ;.至少有一个论据   &#39; IWMPGraphEventHandler.NotifyAcquireCredentials&#39;无法编组   由运行时封送器。因此,这些论点将作为传递   一个指针,可能需要不安全的代码来操作。

我认为我遇到了内存泄漏,但我感到很茫然,而且我在运行时在Threads或GPU Threads窗口中都没有看到任何内容。

我不相信这是导致此问题的代码,但如果您想查看代码注释,我会添加相关部分。

1 个答案:

答案 0 :(得分: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客户端上创建安装程序