(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 位平台,并且 运行 以管理员身份使用该应用程序。
我正在尝试从 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 位平台,并且 运行 以管理员身份使用该应用程序。