正确放置了DLL后仍然出现
查看非托管dll的依赖是否存在搜索路径,用dumpbin -imports 查看依赖。搜索路径为可执行文件目录、PATH环境变量的目录、system32/wow64.
NOTE: 使用静态链接可解决对dll的依赖
- Procmon显示
zlibwapi64.dll找到了,然后MSVCR90.dll找不到了。系统会以默认顺序对其进行.aspx#standard_search_order_for_desktop_applications)搜索,但找不到。这是预料之中的,因为该dll位于中Windows\winsxs\<multiple locations>。那么问题是,为什么非托管C ++设法用它加载它LoadLibrary?以这种方式自行安装VC ++运行时是否正确? – Gserg 2012年 5月27日14:20 - 2
当然可以,因为您的非托管C ++ exe已经加载了msvcr90.dll。您的DLL可能缺少必需的清单。不确定DLL项目中发生了什么,通常这是自动完成的,但是请认真考虑使用/ MT来完全避免此问题。 – 汉斯·帕桑 ( Hans Passant)2012年5月27日14:34 Surely it works because your unmanaged C++ exe has already loaded msvcr90.dll-> facepalm.jpg – Gserg 2012年 5月27日15:00- 清单生成已在下载的项目中禁用。不知道为什么。启用它就可以了。
