我有一个.net应用程序,它使用一些vc ++编译的Win32 dll。它在32位Win上工作得很好,但在64位上存在一个问题:“无法加载DLL'xyz':找不到指定的模块。(HRESULT异常:0x8007007E)”
使用依赖walker我发现它错过了以下dll:MSVCP100.DLL,MSVCR100.DLL,GDIPLUS.DLL,GPSVC.DLL,IESHIMS.DLL
如何将它们安装到我的64位Win?我应该把它们放在哪里?我应该注册吗?还是...?
注意,我的项目是为x86平台编译的,它是从Program Files(x86)文件夹作为32位应用程序运行的。我的dll在Visual Studio 2010中通过Visual C ++被命名为Win32。
请注意,由于其他一些原因,我的dll无法获得64版本的任务,所以它不是一个解决方案。
谢谢!
答案 0 :(得分:10)
整个过程应为32位或64位。如果无法以64位编译所有依赖库,则需要以32位运行.NET项目。为此,请创建x86配置(默认为Any CPU)并在此配置中构建.NET项目。
您还需要在目标计算机上安装VC ++ 2010可再发行组件包,并在您的情况下使用正确的位数 - x86。该软件包可以从Microsoft WEB站点下载。
如果您的程序有安装包,则应将VC ++可再发行组件作为单个文件或合并模块添加到其中。
答案 1 :(得分:2)
正如ALex Farber所说,你必须在目标机器上安装一些运行时dll: