用VS2008新建一个程序,这个程序调用用vc6.0编写的dll文件,进行了如下操作:
1、把dll,lib,h文件复制到程序目录和dbug目录中;
2、在项目-->属性-->链接器-->输入-->附加依赖项中添加对应的lib文件;
3、在工程中添加对应的h文件;
执行编译,结果提示为"无法定位程序输入点xxx()于动态链接库.dll"问题,
请教各位大侠,我这种操作方法还遗漏了什么?怎么会出现这种问题?
8 个解决方案
#1
xxx是个函数吧。
一种情况就是依赖的dll又依赖了其他的dll
一种就是平台之间的函数差异。
比如我曾遇到过这种问题。
无法定位程序输入点_except_handler4_common于动态链接库msvcrt.dll上
最近,多种软件都出现了一个启动时的错误提示 “无法定位程序输入点_except_handler4_common于动态链接
库msvcrt.dll上”。
出现这个提示情况是:Windows Xp 系统; 软件包括:window live writer 2009, windows messenger 2009,
firefox 3.5 等非常新的版本。
这个提示出现后,点击确定,并不影响程序的使用。这个问题出现的原因,其实微软自己的问题。可谓是微软
的Vista 后遗症吧。
在 Vista 系统里,有个挺酷的功能,就是“程序缩略图”,有点3D效果,这个功能,调用了 dwmapi.dll 这
个库,而 dwmapi.dll 又引用了 msvcrt.dll 中的 _except_handler4_common 功能。
然而,在XP系统中,系统自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同, 并没有这个
_except_handler4_common ,结果就出现了启动程序时,遇到的 “无法定位程序输入点
_except_handler4_common于动态链接库msvcrt.dll上”的错误提示。
解决方法:
将 c:\windows\system32 下的 dwmapi.dll 改名,例如:改为 dwmapi.dll.bak。
一种情况就是依赖的dll又依赖了其他的dll
一种就是平台之间的函数差异。
比如我曾遇到过这种问题。
无法定位程序输入点_except_handler4_common于动态链接库msvcrt.dll上
最近,多种软件都出现了一个启动时的错误提示 “无法定位程序输入点_except_handler4_common于动态链接
库msvcrt.dll上”。
出现这个提示情况是:Windows Xp 系统; 软件包括:window live writer 2009, windows messenger 2009,
firefox 3.5 等非常新的版本。
这个提示出现后,点击确定,并不影响程序的使用。这个问题出现的原因,其实微软自己的问题。可谓是微软
的Vista 后遗症吧。
在 Vista 系统里,有个挺酷的功能,就是“程序缩略图”,有点3D效果,这个功能,调用了 dwmapi.dll 这
个库,而 dwmapi.dll 又引用了 msvcrt.dll 中的 _except_handler4_common 功能。
然而,在XP系统中,系统自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同, 并没有这个
_except_handler4_common ,结果就出现了启动程序时,遇到的 “无法定位程序输入点
_except_handler4_common于动态链接库msvcrt.dll上”的错误提示。
解决方法:
将 c:\windows\system32 下的 dwmapi.dll 改名,例如:改为 dwmapi.dll.bak。
#2
用Depends看下你编译的exe和那个vc6的dll,看是否正确,问题立马找到
#3
还是有dll文件漏掉了。找不到
#4
都复制到工程所在的目录了啊,还是不行
#5
解决了吗?我也遇到了这种问题。不知道怎么解决
#6
有可能.lib 和 DLL 不匹配, 或者缺少依赖DLL等
DependsView 查看下DLL 和 EXE 注意红色部分
DependsView 查看下DLL 和 EXE 注意红色部分
#7
是不是在xp上。vs2012就不支持xp了
#8
在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
#1
xxx是个函数吧。
一种情况就是依赖的dll又依赖了其他的dll
一种就是平台之间的函数差异。
比如我曾遇到过这种问题。
无法定位程序输入点_except_handler4_common于动态链接库msvcrt.dll上
最近,多种软件都出现了一个启动时的错误提示 “无法定位程序输入点_except_handler4_common于动态链接
库msvcrt.dll上”。
出现这个提示情况是:Windows Xp 系统; 软件包括:window live writer 2009, windows messenger 2009,
firefox 3.5 等非常新的版本。
这个提示出现后,点击确定,并不影响程序的使用。这个问题出现的原因,其实微软自己的问题。可谓是微软
的Vista 后遗症吧。
在 Vista 系统里,有个挺酷的功能,就是“程序缩略图”,有点3D效果,这个功能,调用了 dwmapi.dll 这
个库,而 dwmapi.dll 又引用了 msvcrt.dll 中的 _except_handler4_common 功能。
然而,在XP系统中,系统自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同, 并没有这个
_except_handler4_common ,结果就出现了启动程序时,遇到的 “无法定位程序输入点
_except_handler4_common于动态链接库msvcrt.dll上”的错误提示。
解决方法:
将 c:\windows\system32 下的 dwmapi.dll 改名,例如:改为 dwmapi.dll.bak。
一种情况就是依赖的dll又依赖了其他的dll
一种就是平台之间的函数差异。
比如我曾遇到过这种问题。
无法定位程序输入点_except_handler4_common于动态链接库msvcrt.dll上
最近,多种软件都出现了一个启动时的错误提示 “无法定位程序输入点_except_handler4_common于动态链接
库msvcrt.dll上”。
出现这个提示情况是:Windows Xp 系统; 软件包括:window live writer 2009, windows messenger 2009,
firefox 3.5 等非常新的版本。
这个提示出现后,点击确定,并不影响程序的使用。这个问题出现的原因,其实微软自己的问题。可谓是微软
的Vista 后遗症吧。
在 Vista 系统里,有个挺酷的功能,就是“程序缩略图”,有点3D效果,这个功能,调用了 dwmapi.dll 这
个库,而 dwmapi.dll 又引用了 msvcrt.dll 中的 _except_handler4_common 功能。
然而,在XP系统中,系统自带的 msvcrt.dll 和 Vista 中的 msvcrt.dll 版本不同, 并没有这个
_except_handler4_common ,结果就出现了启动程序时,遇到的 “无法定位程序输入点
_except_handler4_common于动态链接库msvcrt.dll上”的错误提示。
解决方法:
将 c:\windows\system32 下的 dwmapi.dll 改名,例如:改为 dwmapi.dll.bak。
#2
用Depends看下你编译的exe和那个vc6的dll,看是否正确,问题立马找到
#3
还是有dll文件漏掉了。找不到
#4
都复制到工程所在的目录了啊,还是不行
#5
解决了吗?我也遇到了这种问题。不知道怎么解决
#6
有可能.lib 和 DLL 不匹配, 或者缺少依赖DLL等
DependsView 查看下DLL 和 EXE 注意红色部分
DependsView 查看下DLL 和 EXE 注意红色部分
#7
是不是在xp上。vs2012就不支持xp了
#8
在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll