gpt4 book ai didi

c++ - SetDllDirectory 因某些 unicode 符号而失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:47 25 4
gpt4 key购买 nike

我正在使用 SetDllDirectory(实际上是 SetDllDirectoryW)从特定目录加载一些延迟加载的库。
就像

if (SetDllDirectory(directory.c_str()) == 0)
{
ERROR_MSG("Failed to set the current dll directory [%d]\n", GetLastError());
}

所以一切正常,大多数时候,"f:/source/trunk 11" 正常等等
但是当使用 "f:/source/trunk Gest hieß es !№;%()_@#$^&" 调用时,我从 GetLastError 得到了 ERROR_INVALID_PARAMETER。我可以创建一个具有这样名称的目录,并且可以使用它。
但是 SetDllDirectory"Gest hieß es !№;%()_@#$^&" 有什么特别之处?我该如何解决?

最佳答案

问题不在于使用国际字符。问题是分号。无论出于何种原因,SetDllDirectory 都不接受您提供的路径中的分号。我找不到任何文档说明为什么会这样,但很容易检查它是否如此。

SetDllDirectoryW(L"aa")

会成功,但是

SetDllDirectoryW(L"a;a")

会失败。

AddDllDirectory 也是如此。任何包含分号的路径都会被拒绝。

我的猜测是 Windows 在内部将此信息存储在单个字符串中,使用分号作为分隔符。因此,这些函数必须拒绝包含分号的路径。

关于c++ - SetDllDirectory 因某些 unicode 符号而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25740645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com