我有一个用C ++ Builder 10.0 Seattle构建的VCL应用程序。它使用表单上的Axis Media Control来显示视频,因此它在运行时加载AxisMediaControl.dll
文件。
过去,我已将其部署在32位目标计算机上,其中应用程序位于C:\Program Files\AppName
目录中,AxisMediaControl.dll
已安装到同一位置。一切都按预期工作。
此应用程序是32位应用程序,因此在部署到64位目标计算机时,它将安装在C:\Program File (x86)\AppName
目录中。同样,AxisMediaControl.dll
文件部署在应用程序目录中。
该应用无法启动,并显示错误“无法找到指定的模块”。使用Process Monitor,我发现程序正在较旧的Program Files
目录而不是x86
目录中查找Axis DLL。什么会导致应用程序在该位置查找DLL?
在我的开发机器上运行相同的二进制文件,应用程序从我的SysWOW64
目录加载DLL。如果DLL放在目标计算机上,它仍然无法查找该位置。 ONLY 正在查看较旧的Program Files
应用程序路径,这是我无法理解的。
我希望有人可以解释一下。