我有一个名为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窗口中都没有看到任何内容。
我不相信这是导致此问题的代码,但如果您想查看代码注释,我会添加相关部分。
答案 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客户端上创建安装程序