2)同事的笔记本调用该DLL文件,成功!
dllHandle := LoadLibarary('DT.dll');
if dllHandle <> 0 then
showmessage('成功');
3) 我的笔记本用同样的语句,则无法调用。 dllHandle 的值是 0;
4)我用Delphi自己编写了一个DLL文件:testdll.dll。用我自己的笔记本调用成功!
我的分析:
首先我可以调用自己编写的testdll.dll,应该说明我的语句没有问题。
同事笔记本安装了VC,我的笔记本里面没有。
我认为问题应该出在了编译环境上面,但不知道如何解决!!!
另外说明:
同事传给我一个VC运行库文件:vcredist_x86.exe,我已经安装,问题没有解决。
我之后安装了VS2005,问题还是没有解决。
我的机器就是无法调用DT.dll,真是气死人了!
我要是重新安装系统可以解决这个问题吗?
8 个解决方案
#1
说的简单点:
Delphi能LoadLibaray用Delphi编译的DLL文件,不能Load用VC编译的Dll文件。
怎么办?
Delphi能LoadLibaray用Delphi编译的DLL文件,不能Load用VC编译的Dll文件。
怎么办?
#2
出现这种事也够神的了, 你已经检查了dllHandle = 0 ,没有代码我只能说可以从下面几点入手查, 总比我在这里猜的好.
1. 没有DT.dll的代码, 请检查dll写的代码在加载时有什么特殊代码, 尤其是DLL_PROCESS_ATTACH的时候
2. 是否跟系统用户权限有关, 请再仔细检查DLL的路径是否正确.
3. 请使用GetLastError来检查Windows反馈加载DLL出错的原因.
1. 没有DT.dll的代码, 请检查dll写的代码在加载时有什么特殊代码, 尤其是DLL_PROCESS_ATTACH的时候
2. 是否跟系统用户权限有关, 请再仔细检查DLL的路径是否正确.
3. 请使用GetLastError来检查Windows反馈加载DLL出错的原因.
#3
可以通过Delphi带的工具TDump.exe查看该DLL的导入函数,也可以通过VC的工具Dumpbin.exe查看该DLLr导入函数。然后看看缺哪些DLL。
如果有安装VC6,或者windows SDK的话,可以通过depend.exe这个工具直接看出来缺少什么DLL。
如果有安装VC6,或者windows SDK的话,可以通过depend.exe这个工具直接看出来缺少什么DLL。
#4
ding
#5
可以通过Delphi带的工具TDump.exe查看该DLL的导入函数,也可以通过VC的工具Dumpbin.exe查看该DLLr导入函数。然后看看缺哪些DLL。
三楼的方法是对的。
三楼的方法是对的。
#6
你带着完整的路径再次调用一下那个dll试试看。
另外,dll中的导出函数是区分大小写的,呵呵。
另外,dll中的导出函数是区分大小写的,呵呵。
#7
GetLastError函数要来干嘛用的,摆设啊!
#8
根据楼主所言,应该是环境的问题,同事包含了TD。DLL所需要的环境,而你的机器不具备此环境,导致调用失败。
#1
说的简单点:
Delphi能LoadLibaray用Delphi编译的DLL文件,不能Load用VC编译的Dll文件。
怎么办?
Delphi能LoadLibaray用Delphi编译的DLL文件,不能Load用VC编译的Dll文件。
怎么办?
#2
出现这种事也够神的了, 你已经检查了dllHandle = 0 ,没有代码我只能说可以从下面几点入手查, 总比我在这里猜的好.
1. 没有DT.dll的代码, 请检查dll写的代码在加载时有什么特殊代码, 尤其是DLL_PROCESS_ATTACH的时候
2. 是否跟系统用户权限有关, 请再仔细检查DLL的路径是否正确.
3. 请使用GetLastError来检查Windows反馈加载DLL出错的原因.
1. 没有DT.dll的代码, 请检查dll写的代码在加载时有什么特殊代码, 尤其是DLL_PROCESS_ATTACH的时候
2. 是否跟系统用户权限有关, 请再仔细检查DLL的路径是否正确.
3. 请使用GetLastError来检查Windows反馈加载DLL出错的原因.
#3
可以通过Delphi带的工具TDump.exe查看该DLL的导入函数,也可以通过VC的工具Dumpbin.exe查看该DLLr导入函数。然后看看缺哪些DLL。
如果有安装VC6,或者windows SDK的话,可以通过depend.exe这个工具直接看出来缺少什么DLL。
如果有安装VC6,或者windows SDK的话,可以通过depend.exe这个工具直接看出来缺少什么DLL。
#4
ding
#5
可以通过Delphi带的工具TDump.exe查看该DLL的导入函数,也可以通过VC的工具Dumpbin.exe查看该DLLr导入函数。然后看看缺哪些DLL。
三楼的方法是对的。
三楼的方法是对的。
#6
你带着完整的路径再次调用一下那个dll试试看。
另外,dll中的导出函数是区分大小写的,呵呵。
另外,dll中的导出函数是区分大小写的,呵呵。
#7
GetLastError函数要来干嘛用的,摆设啊!
#8
根据楼主所言,应该是环境的问题,同事包含了TD。DLL所需要的环境,而你的机器不具备此环境,导致调用失败。