在c#中调用Delphi DLL“”尝试读取或写入受保护的内存。“错误

时间:2013-07-16 10:33:49

标签: c# delphi dll dllimport

我正在尝试导入delphi dll并使用它的方法。

这是delphi方法签名:

function CALinkEncode(SubscriberID, MailshotID, LinkID: DWORD; sCode: PWideChar): HRESULT; stdcall; 

以下是导入dll并使用该函数的c#代码。

    [DllImport(@"Decoder.dll", CharSet = CharSet.Ansi)]
    static extern string CALinkEncode(
        int SubscriberID,
        int MailshotID,
        int LinkID
    );

    public static string CALinkDecodeString(int cas, int cam, int cal)
    {
        string retvalptr = CALinkEncode(cas, cam, cal);

        return retvalptr;
    }

请帮忙。

1 个答案:

答案 0 :(得分:4)

您缺少参数,返回类型错误,字符集错误。它应该是:

[DllImport(@"Decoder.dll", CharSet = CharSet.Unicode)]
static extern uint CALinkEncode(
     uint SubscriberID,
     uint MailshotID,
     uint LinkID,
     string sCode
 );

我假设字符串参数是输入参数。如果没有,那么你需要将它声明为StringBuilder并传递一个具有足够容量的StringBuilder实例用于输出缓冲区。