我有一个 DLL 函数,可以将文件转换为另一种格式。 该函数生成多个文件作为输出。 因此,它用输出文件的路径填充第二个参数。
C++函数定义如下:
int Convert(LPTSTR lpSource, TCHAR outputFileName[][MAX_PATH]);
如何混搭第二个参数,以便我的 C# 应用程序可以正确接收输出文件路径?
[DllImport("Convert.dll")]
private static extern int Convert(
[MarshalAs(UnmanagedType.LPTStr)] string lpszSource,
????
);
提前致谢。
最佳答案
我会使用 C++/CLI(它非常擅长在 native C/C++ 代码和托管代码之间构建桥接层)使事情变得更简单。
基本上,您可以编写一个薄的 C++/CLI 层,在其主体中公开调用 native 函数的方法,然后将返回的 native 字符串复制到 gcnew
中。 -ly 创建了 array<String^>
,并将其返回给 C# 托管调用方。
关于c# - 如何编码二维 TCHAR 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17143419/