【发布时间】:2010-07-22 07:04:20
【问题描述】:
在我的一个项目中,我使用了一个 Delphi 应用程序,它动态加载一个包装 DLL(导出 C 样式函数),该 DLL 又静态链接到一堆第 3 方 DLL。
它在我的测试机器上运行良好,但在我的客户计算机上它未能初始化,并出现错误消息,例如“在 TMYlibrary.dll 中找不到入口点 _somefunction@4AKKZ”。
在对 sysinternal 的进程监视器进行一些调查后,我意识到 Windows 会首先在 windows/sytem32 中查找 DLL,因此如果 system32 中存在与 my DLL 类似的 DLL,Windows 会选择它一个并尝试在其中找到我的函数入口点 - 这会失败。
你知道改变 Windows 的 DLL 搜索行为的可能性吗?
其他信息
- [更新] .exe 文件位于应用程序文件夹树的顶层。
- Wrapper 和 3rd-party-DLL 都位于我的应用程序文件夹的子文件夹 /bin 中
- 开发平台为 windows XP/7,dll 使用 VS2008,应用程序使用 Delphi 2010
【问题讨论】:
-
EXE 文件在哪里?也在 \bin 文件夹中?
标签: c++ windows delphi delphi-2010 dll