如何强制从当前目录加载dll



我已将较新版本的GdiPlus.dll复制到我的项目目录中。然而,窗口总是从加载它

"C:\WINDOWS\WinSxS\x86_Microsoft.WINDOWS.GdiPlus_6595b64144ccf1df_1.0.6002.23084_x-ww_f3f35550\GdiPlus.dll"

我正在使用XP。

要对DLL加载施加完全控制,请将DLL的完整路径传递给LoadLibrary

如果使用运行时链接,这是可行的。对于加载时链接,您依赖于DLL搜索顺序。首先搜索的是加载exe的目录。也就是说,对于像GDI+这样的操作系统组件,系统无论如何都会使用SxS DLL,这是合理的。

您的问题标题是"当前目录",但在链接DLL时,您永远不想依赖当前目录的值。当前目录的值是不可预测的。

最后,GDI+是一个系统组件,我认为提供自己的GDI+DLL是否明智值得怀疑。这也很可能是非法的,因为GDI+的重新分发是不允许的。也许你选择了错误的解决方案。

您可以使用此声明将dll的目录设置为已定义的路径。

function SetDllDirectory(lpPathName:PWideChar): Bool; stdcall; external 'kernel32.dll' name 'SetDllDirectoryW';

使用dll后,请记住更改路径。

最新更新