求教无法定位程序输入点于动态链接库问题

时间:2021-07-15 15:51:51
各位大侠
用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。

#2


用Depends看下你编译的exe和那个vc6的dll,看是否正确,问题立马找到

#3


还是有dll文件漏掉了。找不到

#4


都复制到工程所在的目录了啊,还是不行

#5


解决了吗?我也遇到了这种问题。不知道怎么解决

#6


有可能.lib 和 DLL 不匹配, 或者缺少依赖DLL等
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

#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。

#2


用Depends看下你编译的exe和那个vc6的dll,看是否正确,问题立马找到

#3


还是有dll文件漏掉了。找不到

#4


都复制到工程所在的目录了啊,还是不行

#5


解决了吗?我也遇到了这种问题。不知道怎么解决

#6


有可能.lib 和 DLL 不匹配, 或者缺少依赖DLL等
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