C++的函数参数列表中包含一个char*的输出型参数,然而在C#调用该dll时候,会自动将函数的中的char*参数“翻译”为sbyte*, 使用了各种方法都不能调用函数,主要是不能合适的转换为sbyte*。

1、【项目】->【属性】->【生成】->勾选 【允许不安全代码】

2、引入头文件 using System.Runtime.InteropServices;

3、

string videoName = "ComplexBkg1.avi";
unsafe {
IntPtr intPtrStr = (IntPtr)Marshal.StringToHGlobalAnsi(videoName);
sbyte* sbyteStr = (sbyte*)intPtrStr;
temp.fishTracking(sbyteStr);
}

05-17 11:21