1. 程式人生 > >關於在64位系統上,使用APlayer,運行報錯“找不到指定的模塊”

關於在64位系統上,使用APlayer,運行報錯“找不到指定的模塊”

64位系統 詳細信息 visible 對話框 ole event onu get ***

使用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)

問題得已解決,有關個中關系,還不太清楚,只是記錄保存下,也希望可以幫到有需要的各位

關於在64位系統上,使用APlayer,運行報錯“找不到指定的模塊”