(DLLImport) 试图读取或写入受保护的内存。这通常表明其他内存已损坏

(DLLImport)Attempted to read or write protected memory. This is often an indication that other memory is corrupt

我正在尝试从 C 代码 dll 导入函数。

函数是

 bool AsrLibSetLcdBacklight(ESCORE_LCDBR_CONTROL Ctrl)

c代码中有枚举

typedef enum
{
   ESCORE_LCDBRCTL_UP,
ESCORE_LCDBRCTL_DOWN
} ESCORE_LCDBR_CONTROL_TYPE;

我试图在 Visual studio 2013 年的 windows 表单应用程序中使用 C# 和以下代码调用它 -->

public enum EWestern { ESCORE_LCDBRCTL_UP = 0, ESCORE_LCDBTCTL_DOWN = 1 };

    [DllImport("AsrCore.dll",CallingConvention = CallingConvention.Cdecl)]
    public static extern bool AsrLibSetLcdBacklight([In]EWestern e);

并通过单击按钮调用此函数

private void button4_Click(object sender, EventArgs e)

  {
      if (AsrLibSetLcdBacklight(EWestern.ESCORE_LCDBTCTL_DOWN))
        {
            MessageBox.Show("backlight Decreased", "Test");
        }
    }

当我 运行 代码时,我收到有关 SystemAccessViolation 的错误。

请让我知道这里的问题是什么,我做对了吗?语法好吗?

谢谢

我为解决问题所做的工作是确保我为我的应用程序使用 64 位平台,并且 运行 以管理员身份使用该应用程序。