sum*_*ame 4 c++ windows delphi dll delphi-2010
在我的一个项目中,我使用一个Delphi应用程序,它动态加载一个包装DLL(导出C-Style函数),后者又与一堆第三方DLL静态链接.
它在我的测试机器上工作正常,但在我的客户计算机上它无法初始化时出现错误消息"无法在TMYlibrary.dll中找到入口点_somefunction @ 4AKKZ".
在使用sysinternal的进程监视器进行一些调查后,我意识到Windows首先会在windows/sytem32中看到DLL,所以如果在system32中出现类似于我的 DLL的DLL,那么windows会选择那个并尝试找到我的函数入口点.它 - 会失败.
你知道改变windows的DLL搜索行为的可能吗?
附加信息
sum*_*ame 13
我自己找到了另一种方法:
SetDllDirectory 添加一个额外的搜索路径到要查看的位置列表.
来自http://msdn.microsoft.com/en-us/library/ms686203%28v=VS.85%29.aspx
调用SetDllDirectory后,DLL搜索路径为:
- 加载应用程序的目录.
- lpPathName参数指定的目录.
- 系统目录.使用GetSystemDirectory函数获取此目录的路径.该目录的名称是System32.
- 16位系统目录.没有函数可以获取此目录的路径,但会搜索它.该目录的名称是System.
- Windows目录.使用GetWindowsDirectory函数获取此目录的路径.
- PATH环境变量中列出的目录.
(也许我应该在发布SO之前进行谷歌搜索;)
| 归档时间: |
|
| 查看次数: |
437 次 |
| 最近记录: |