PInvoking DLL函数时出现NotSupportedException错误

时间:2014-06-11 08:21:12

标签: c# c++

我正在使用一个名为ExecCommand()的函数的DLL文件。 C ++标题很好地将此函数定义为:

    _NFC_EXPORT_ ResponseMsg * WINAPI ExecCommand(Commands pCmd, ...);

返回值是一个结构,在头文件中也定义为:

    typedef struct _ResponseMsg 
    {
    int status;
    int length;
    BYTE data[APDU_LEN];
    BOOL statuswords;
    BYTE sw1;
    BYTE sw2;

    TCHAR errorMsg[MAX_PATH];

    } ResponseMsg;

参数“Commands pCmd”是一个枚举。

我尝试使用PInvoke在c#程序中访问此函数:

    [DllImport("\\Windows\\NFC_DLL.dll", EntryPoint = "ExecCommand")]
    [return: MarshalAs(UnmanagedType.LPStruct)]
    public static extern ResponseMsg ExecCommand(
        Commands pCmd, 
        params byte[] pParam
        );

我将ResponseMsg定义为:

    [StructLayout(LayoutKind.Sequential), Serializable]
    public struct ResponseMsg
    {
        public int status;
        public int length;

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 255)]
        public byte[] data;

        public bool statuswords;
        public byte sw1;
        public byte sw2;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
        public string errorMsg;
    }

在执行期间,我不断收到NotSupportedException错误。你能发现我的c#代码中的错误吗?请指教。谢谢。

0 个答案:

没有答案