托管/非托管c++中的wchar_t NUL
wchar_t NUL in managed/unmanaged C++
我需要使用这个(非托管)c++库。其中一个方法的参数是wchar_t*。我尝试在c#中使用它,但我所有的尝试都导致错误代码"无效参数"。
我为它写了一个托管c++包装器-同样的问题。现在,我比较了c++包装器中的参数值和库附带的本地c++示例中的参数值。我看到的唯一显著的区别是,我的托管c++中的NUL是"0 L"(Visual Studio观察),而非托管示例中的NUL只是"0"。它们都有相同的值……
0。这真的是问题吗?(我尝试手动设置该字符为'0',但得到相同的结果)如果是,我如何解决它?
编辑:图片来源:http://img6.imageshack.us/img6/5977/comparisonofvalues.png好的,左边是我的代码(托管c++),右边是示例(非托管c++)。事实上,右边的那个在工作,左边的那个不行(函数拒绝参数)。我想问题出在第17个字——NUL上。还有什么想法吗?
调试器中的差异只是外观。您会注意到调试器通常显示两个值:二进制值和匹配的Unicode字符。但是您不能为二进制值0显示Unicode字符。两个调试器处理它的方式略有不同(显示L''
与不显示),但内存中的位是相同的。
另一方面,您的ip
字符串是垃圾。
您可以检查您的项目属性。有一个编译器选项可以控制wchar_t是否被视为内置类型。将其设置为NO将使用wchar_t的旧标头定义,并可能解决您的问题。
相关文章:
- MacOS通过在莫哈韦"wchar.h"下破碎的自制啤酒发出叮当声
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- 'const char*'和'WCHAR*'
- 为什么需要与 WCHAR 相关的代码处理
- 无法使用 mingw-w64 g++ 编译:找不到 <wchar.h>
- 无法将参数 1 从 WCHAR 转换为常量字符 *
- 无法使用 swprintf 在 WCHAR* 中打印字符*
- -fshort-wchar 和 std::wstring - 分段错误
- 我应该使用 wchar 还是 char 来加密?
- 【MacOSX 10.15.1】使用 odb 生成数据库,致命错误:wchar.h:没有这样的文件或目录 #include < wchar.h>
- 如何在 C++ 中的 wcstok 中使用常量 WCHAR* 变量?
- 将字符串文本常量定义为 char const* 和 wchar const*
- 比较嵌套 for 循环中的两个 wchar 数组?
- 当 NUL 字符被定义为字符串的一部分时,为什么 strlen() 不计算终止 NUL 字符的字节?
- wchar 模式下 pugixml 的链接错误
- 如果字符串在 C/C++ 中没有 NUL 字符(以防编译器允许它通过)会发生什么情况?
- strcmp 错误'WCHAR [260]' 'const char *'
- 'Cannot add two pointers'添加带有 WCHAR 的 LPCWSTR
- UWP 创建文件2 ERROR_ACCESS_DENIED "NUL"
- 如何将CString转换为使用WCHAR的Windows API和自定义函数?