我已将较新版本的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
后,请记住更改路径。