wchar_t管理/非托管C ++中的NUL

时间:2011-09-23 16:11:18

标签: .net c++ wchar-t nul

我需要使用这个(非托管)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。 还有什么进一步的想法吗?

2 个答案:

答案 0 :(得分:1)

调试器的不同之处仅在于外观。您会注意到调试器通常显示两个值:二进制值和匹配的Unicode字符。但是你不能为二进制值0显示Unicode字符。两个调试器以稍微不同的方式处理它(显示L''而不显示任何内容),但内存中的位是相同的。

另一方面,您的ip字符串是垃圾。

答案 1 :(得分:0)

您可以检查项目属性。有一个编译器选项可以控制是否将wchar_t视为内置类型。将此设置为NO将使用wchar_t的旧标头定义,并可以解决您的问题。