发生原因
C++那里
void setfile(char** filepathlist)
dll函数中有个参数接收char**,内容是文件名的集合,于是我就用了string[]
然而传的路径是中文时就会报“外部组件发生异常”错误
解决方法
原先
[DllImport(@"CppDll", CallingConvention = CallingConvention.Cdecl)]
public unsafe static extern void setfile(string[] filepathlist);
改为
[DllImport(@"CppDll", CallingConvention = CallingConvention.Cdecl)]
public unsafe static extern void setfile(IntPtr[] filepathlist);
然后调用的时候
IntPtr[] intPtrs = new IntPtr[length];
for (int i = 0; i < length; i++)
{
intPtrs[i] = Marshal.StringToHGlobalAnsi(filepathlist[i]);
}
setfile(intPtrs);
就OK了