在 c++ 中,我要导出的方法是:
__declspec(dllexport) int __thiscall A::check(char *x,char *y,char *z)
{
temp=new B(x,y,z);
}
在 c# 中,我正在像这样导入此方法:
[DllImport("IDLL.dll", CallingConvention=CallingConvention.ThisCall, ExactSpelling = true, EntryPoint = "check")]
public static extern int check(string x, string y, string z);
我在 c# 中像这样调用这个方法并传递值:
public int temp()
{
string x="sdf";
string y="dfggh";
string z="vbnfg";
int t;
t=Class1.check(x,y,z);
return t;
}
问题是,当我调试本机代码时,我看到参数 x、y、z 的值为 sdf、dfggh、vbnfg 并且当它们到达这样的 c++ dll 时甚至在它进入本机 c++ dll 方法之前就被更改了。
x=dfggh,y=vbnfg,z=null value
并给我一个错误,说空指针值被传递给函数。谁能帮我解决这个奇怪的问题。