托管/非托管c++中的wchar_t NUL

wchar_t NUL in managed/unmanaged C++

本文关键字:wchar NUL 中的 c++ 托管      更新时间:2023-10-16

我需要使用这个(非托管)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的旧标头定义,并可能解决您的问题。