SetDllDirectory由于某些unicode符号而失败
SetDllDirectory fails with some unicode symbols
我使用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内部将这些信息存储在一个字符串中,使用分号作为分隔符。因此,这些函数必须拒绝包含分号的路径。
相关文章:
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- dynamic_cast什么时候会因为隐藏符号而失败?
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- 在 Mac 上C++编译代码时处理“dyld:惰性符号绑定失败:找不到符号”错误
- GLFW的最小示例由于架构X86_64的未定义符号而失败
- C++编译错误:ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v
- dyld:惰性符号绑定失败:找不到符号:_yylex
- ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 提升 Python 导入失败,未定义包装类的符号
- 如何修复此 OpenCV 错误:断言失败((无符号)i < (无符号)cn) 在 cv::Vec<unsigned char,3>:::运算符 (), 文件
- OSX MOJAVE -LD:架构X86_64 clang找不到符号:错误:链接器命令失败,出口代码1
- LD:架构x86_64 clang找不到符号:错误:链接器命令失败,出口代码1(使用-v to See
- dyld:惰性符号绑定失败:找不到符号.预期在:平面命名空间
- Qt 和 CMake 失败并出现重复的符号
- 动态链接到 c++ 静态成员字段时符号查找失败
- .so中存在的符号已编译.o引用了它,但链接失败
- C/C++:将 char[] 转换为 int 失败,无符号 char[] 到 int 有效,为什么
- ld:1 个重复符号用于架构x86_64 clang: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 无符号长 vs size_t会导致函数过载失败
- 体系结构x86_64的未定义符号,链接器命令失败