我试图弄清楚为什么我需要使 DLLImport 函数的参数为“ref int XXX”,而不仅仅是“int XXX”。对于后者,这会导致“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。” 问题......但是当我将“ref”添加到参数中......它工作得很好。例如:
[DllImport("someDLL.dll", CallingConvention = CallingConvention.StdCall)] public static extern int SomeDLL_GetDevices(ref int devices);
^ 以上作品
[DllImport("someDLL.dll", CallingConvention = CallingConvention.StdCall)] public static extern int SomeDLL_GetDevices(int devices);
^ 以上崩溃和烧伤
我不是从 C# 及其编组方面进行 C++ 调用的导出,因此如果有人可以解释为什么一个有效而另一个无效,我将不胜感激。
阿晨1998
相关分类