今天重新下载代码编译打包一系列流程后,安装报错提示某个dll注册
看错误代码云里雾里,于是我启动cmd,使用regsvr32注册此dll,注册失败,提示
loadlibrary失败比较有思路解决,但是后面提示找不到指定的程序,我就晕了。我理解的是注册程序找不到TopVDAddin文件,但是文件明明存在啊!
于是我用Dependency Walker查看,解析的确出错,
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
看不懂,于是我看检查了下它的依赖dll
发现Advapi32的图片颜色和其它不同,于是我查看它被引用的导出函数,发现RegSetKeyValueW状态为红色,而检查Advapi32所有的导出函数并没有RegSetKeyValue,于是转而咨询帮助文档,发现Windows Vista及以后的版本才支持此函数,于是我在代码里加入了以下语句
#include<winsdkver.h>
#define _WIN32_WINNT _WIN32_WINNT_WINXP
并将 RegSetKeyValue改为RegSetValueEx,问题解决。
其实我想说你给我个提示个找不到指定的程序是卯意思!
本文记录了一次DLL注册失败的问题排查过程。通过分析错误提示和使用Dependency Walker等工具,最终定位到不兼容的API调用并成功解决问题。
1万+

被折叠的 条评论
为什么被折叠?



