如何编组二维TCHAR数组?

时间:2013-06-17 08:36:51

标签: c# c++

我有一个DLL函数,可以将文件转换为另一种格式。 该函数生成多个文件作为输出。 因此,它使用输出文件的路径填充第二个参数。

C ++函数定义如下:

int Convert(LPTSTR lpSource, TCHAR outputFileName[][MAX_PATH]);

如何设置第二个参数,以便我的C#应用​​程序可以正确接收输出文件路径?

[DllImport("Convert.dll")]
private static extern int Convert(
  [MarshalAs(UnmanagedType.LPTStr)] string lpszSource,
  ????
);

提前致谢。

2 个答案:

答案 0 :(得分:0)

我会使用 C ++ / CLI (这非常擅长在本机C / C ++代码和托管代码之间构建桥接层)使事情更简单。

基本上,您可以编写一个瘦C ++ / CLI层来公开调用其主体中的本机函数的方法,然后将返回的本机字符串复制到gcnew - 创建的 {{1 ,并将其返回给C#托管的调用者。

答案 1 :(得分:0)

我终于明白了。 我将我的C ++函数改为:

int Convert(LPTSTR lpSource, LPTSTR *plpOutputFileName, int size);

C#声明:

[DllImport("Convert.dll")]
private static extern int Convert(
    [MarshalAs(UnmanagedType.LPTStr)] string lpszSource,
    [In, Out] String[] outputFileName,
    int size
);

谢谢大家的帮助。