C# WinForm 添加Windows Media Player 控件调试出现未能加载文件或程序集Interop.WMPLib

lin370832 2015-02-03 04:18:42
如标题,在窗体中添加Windows Media Player 控件,当调试到该界面的时候提示:未能加载文件或程序集“Interop.WMPLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项,当我在添加该控件时,程序自动引用了两个DLL,AxInterop.WMPLib.dll 和 Interop.WMPLib.dll,到最后调试的时候就提示未能加载~,然后想到该项目的输出路径是在另一个名为Public的文件夹下,我就把刚才的那两个dll文件放在Public文件夹下,然后引用这两个,最后还是提示未能加载等

重启VS和重新引用,都不行,不知道该怎么解决了,不知道有没有知道的大神
...全文
525 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin370832 2015-02-03
  • 打赏
  • 举报
回复
明白,明白,原来这么简单,还是我聪明,一点就通
於黾 2015-02-03
  • 打赏
  • 举报
回复
底层原理其实很简单 int型在32位系统中占32位(4字节) 而在64位系统中占64位(8字节) 如果跨平台调用,指针就会异常,指向错误的地址
於黾 2015-02-03
  • 打赏
  • 举报
回复
你那2个dll是32位的,而你的程序是64位的,64位程序集引用32位dll就会找不到 Any Cpu,就如同7楼所说,根据操作系统位数自动运行在某个平台下 如果没有引用任何外部dll,那么.net程序本身是兼容32位和64位的 而如果引用了32位dll,那么就必须编译成x86(当然如果dll本身就兼容32位64位的除外) 还有,如果你引用了64位的dll,那么即使编译成x64也不可能运行在32位系统中
本拉灯 2015-02-03
  • 打赏
  • 举报
回复
引用 6 楼 lin370832 的回复:
还有为何一个项目的目标平台为any cpu调用目标平台为X86的程序会报错?这些底层原理不太清楚
。。。Any Cpu 是说根据操作系统选择运行平台。。。 你操作系统是64位就运行在64位下 32位就运行在32位下。理解?
lin370832 2015-02-03
  • 打赏
  • 举报
回复
还有为何一个项目的目标平台为any cpu调用目标平台为X86的程序会报错?这些底层原理不太清楚
本拉灯 2015-02-03
  • 打赏
  • 举报
回复
引用 4 楼 lin370832 的回复:
[quote=引用 2 楼 wyd1520 的回复:] 改用X86平台
为何改为X86就可以呢?[/quote] 因为你引用的那两个DLL与Windows Media Player 是在X86平台运行的,所以你的程序也只能运行在x86平台。
lin370832 2015-02-03
  • 打赏
  • 举报
回复
引用 2 楼 wyd1520 的回复:
改用X86平台
为何改为X86就可以呢?
lin370832 2015-02-03
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
你的是64位操作系统吗
我的操作系统是64位的,我把目标平台改为X86就可以了,但是我是否需要把所有的项目的目标平台由any cpu 改为X86啊,不改的话报错,然后能否讲解一下这个和操作系统以及目标平台有什么关联?
本拉灯 2015-02-03
  • 打赏
  • 举报
回复
改用X86平台
於黾 2015-02-03
  • 打赏
  • 举报
回复
你的是64位操作系统吗

111,088

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧