我有一个DLL函数,可以将文件转换为另一种格式。 该函数生成多个文件作为输出。 因此,它使用输出文件的路径填充第二个参数。
C ++函数定义如下:
int Convert(LPTSTR lpSource, TCHAR outputFileName[][MAX_PATH]);
如何设置第二个参数,以便我的C#应用程序可以正确接收输出文件路径?
[DllImport("Convert.dll")]
private static extern int Convert(
[MarshalAs(UnmanagedType.LPTStr)] string lpszSource,
????
);
提前致谢。
答案 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
);
谢谢大家的帮助。