关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”
使用APlayer开发了一个C#程序,原先开发电脑是32位的,安装电脑也是32位,只需要将相应的文件打包,然后在system32文件夹中放入atl71.dll和D3DX9_43.dll,项目运转正常。但后来因为系统升级,换了台win10 64位的系统,开发时只需将项目的平台换成x86,但是打包后安装却报错,且system32下的两个dll已存在。经过一天的摸索,因为64位系统有个SysWOW64 文件夹,将所需的两个dll放入此文件夹,问题得已解决。
网上查出两个文件夹的区别
\Windows\SysWOW64 文件夹下存放32位的库和应用程序 (WOW64 == Windows on Windows 64 bit )
\Windows\System32 文件夹下存放64位的库和应用程序
当安装32位的程序在64位系统上时,会把指定拷贝到system32的文件自动改为拷贝到SysWOW64下。
故而,缺失的两个dll应该放在SysWOW64 下。
以下是报错内容
有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾。 ************** 异常文本 ************** System.IO.FileNotFoundException: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E) 在 System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid) 在 System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid) 在 System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid) 在 System.Windows.Forms.AxHost.CreateInstance() 在 System.Windows.Forms.AxHost.GetOcxCreate() 在 System.Windows.Forms.AxHost.TransitionUpTo(Int32 state) 在 System.Windows.Forms.AxHost.CreateHandle() 在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 在 System.Windows.Forms.AxHost.EndInit() 在 TJSYXY.Airdrome.Server.frmMonitor.InitializeComponent() 在 TJSYXY.Airdrome.Server.frmMonitor..ctor(String clientIp) 在 TJSYXY.Airdrome.Server.Controls.CrewMonitorBoard.listView1_DoubleClick(Object sender, EventArgs e) 在 System.Windows.Forms.Control.OnDoubleClick(EventArgs e) 在 System.Windows.Forms.ListView.WndProc(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
问题得已解决,有关个中关系,还不太清楚,只是记录保存下,也希望可以帮到有需要的各位