gpt4 book ai didi

c# - 调用 C++ 函数时尝试读取/写入 protected 内存错误

转载 作者:行者123 更新时间:2023-11-28 03:01:24 25 4
gpt4 key购买 nike

我有一个调用约定设置为 __stdcall (/Gz) 的 C++ 项目 X 和一个 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 类型的对象。

为什么在运行此解决方案时会出现此错误?

最佳答案

您的问题出在 printf() 调用中:"%s" 需要一个指向以 null 结尾的字符串的指针,但您提供了一个 size_t.

关于c# - 调用 C++ 函数时尝试读取/写入 protected 内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20747198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com