C#调用C++DLL,传一个中文的文件路径给C++DLL无效。
现在有一个DLL是播放器,需要给DLL传一个视频文件路径。
C++定义的接口HH5PLAYER_OpenStreamFileM(USHORT nPort,LPCTSTR filelist[], int filenum, DWORD &nTimeLength);
C#里声明如下
[DllImport("MP6DLL\\HH5PlayerSDK.dll")]
public static extern int HH5PLAYER_OpenStreamFileM(int nPort,string[] filelist, int filenum, ref int nTimeLength);
调用时
string[] str=new String[1];
str[0]="D:\\播放数据\\kk.mp6";
int times=0;
int EndSource= PublicDLL.HH5PLAYER_OpenStreamFileM(0,str, 1, reftimes);
这种情况下使用,不会报错,但是视频也播放不了,OpenStreamFileM返回EndSource=-2;
如果把str[0]="D:\\播放数据\\kk.mp6";换成str[0]="D:\\PlayVideo\\kk.mp6";
就可以调用成功,OpenStreamFileM返回EndSource=0;
视频也能播放了。
试用很多编码转换的规则,转换成UTF8,UTF32,等,都没有效果。哪位大哥大姐给个方法。指条明路啊。