我有一个C ++项目X,调用约定设置为__stdcall(/ Gz)和C#项目Y.
我已经在这两个项目中定义了一个类myClass。
class myClass
{
private:int mem1;
};
在类的C#定义中,我用
作为前缀[StructLayout(LayoutKind.Sequential)]
C ++函数是
_declspec (dllexport) void getLen(myClass* str)
{
printf("%s",sizeof(int));
}
在Y中,我已将函数定义如下
[DllImport("X.dll")]
private static extern void getLen(ref myClass str);
我这样称呼它:
getLen(ref str);
其中str是myClass类型的对象。
运行此解决方案时,为什么会出现此错误?
答案 0 :(得分:2)
您的问题出在printf()
调用中:"%s"
需要指向以空字符结尾的字符串的指针,但您提供的是size_t
。