2011-04-10 169 views
1
typedef wchar_t WCHAR buf[1024] ; // code from C++ dll 

如何在C#中定义上面的代码行?转换类型

+1

WCHAR是什么? – AnT 2011-04-10 20:21:18

回答

2

typedef只是一个类型的别名,另一个名字。在C#中没有别名。此声明,否则有点相当于

char[] buf = new char[1024]; 

你可以使用一个普通的char []在一个PInvoke的声明,并通过已分配如上所示的阵列。我会对这段代码持谨慎态度,在全局命名空间中添加一个标识符“buf”会引起麻烦。

0

C#没有typedef,所以你不能在C#中写这行。如果你告诉我们你想做什么,也许有一个解决方案。但是你的问题的答案是:完全不是!

+0

上一行输入C++,我需要在C#中使用Pinvoke – 2011-04-10 19:55:33

+0

@ user689851:您提供的行是* not * C++,再一次。 – AnT 2011-04-10 21:23:13

1

没有WCHAR的定义,没有办法对您发布的代码进行任何说明。但是,假设WCHAR是某种类型的名称,则您发布的代码不是有效的C++代码。它不会像C++代码那样编译。

同时你似乎声称它来自一些“C++ dll”。很可能你没有正确地重现原始代码。更新代码,因为在目前的形式下,它使你的问题完全没有意义。

+0

WCHAR是一个非常常见的(Windows?)typedef /宏,用于Wide-char,它是C#中的一个普通字符。 – 2011-04-10 20:39:07

+0

@Henk Holterman:如果'WCHAR'是宽char类型的typedef /宏,那么OP的声明是无效的,因为它已经明确包含'wchar_t'类型。然而,OP声称它来自有效的代码。该代码的唯一希望是“WCHAR”代表别的东西。 – AnT 2011-04-10 21:08:47

+0

安德烈,二读时你是对的,但它仍然是一个Win.h的东西。 – 2011-04-10 21:17:21