WCHAR wszName[128][256];
怎么托管?
怎么托管?
解决方案 »
- 大家好我是新手,想请问如何用C#将图片二值化并切割只保留图片中一个logo?
- 发布winform程序时,数据库怎么办?
- 急啊!如何获得<div id="aa" title="123"></div>的title值
- 电脑的乱码是怎么出现的?(计算机的字符表里面为什么乱码)
- 请教Just-In-Time(JIT)编译器的问题
- 数据库查询问题
- 开发即时消息,在线程中打开类似msg的收到消息的弹出窗无效,郁闷.
- 关于RichTextBox的字体的问题
- 如何做.net网络开发(新手)
- 在DataView里,怎么样得到当前行的DataRowView?
- C#,winform进制转换问题
- wince开发,如何获取PDA的目录路径
我要在C#中调用的话,必须先托管,但是我不清楚这样的结构该怎么写...
试了好多次都不行
[MarshalAs(UnmangedType.ByValArray, SizeConst = 128, ArraySubType=UnmanagedType.LPWStr)]
string[] wszName;注意:你的字符集应该是unicode方式。
C#这边声明,给个例子:int TestArrayOfStrings(char** ppStrArray, int size);public static extern int TestArrayOfStrings( [In, Out]
String[] stringArray, int size );
{
int id; WCHAR ss[128][256];
};extern "C" void __declspec(dllexport) TestCC(int id,WCHAR ss[128][256]);[DllImport("ExamDll.dll", EntryPoint = "TestcCC",CharSet = CharSet.Unicode)]
public static unsafe extern void TestCC(char[,] rr);private unsafe void button2_Click(object sender, EventArgs e)
{
char[,] rr= new char[128,256];
rr[0, 0] = '1';
TestCC(rr);
}
不知道这样对楼主是否有帮助。。
所以尽量还是想办法在C#里进行操作.
最后解决方式如下:
第一步,托管WCHAR[256]
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct STR
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string name;
}然后再托管WCHAR[128[256]
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct Item
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public STR[] name;
}分两步走就可以了~