Delphi dll和c#pinvoke声明

时间:2013-08-11 18:10:22

标签: c# asp.net delphi pinvoke

我想知道是否有人可以查看我使用Delphi XE2编译的dll的c#dllimport声明。从ISAPI包装器dll调用这个DLL工作正常,但我没有运气从c#asp.net应用程序调用它。

Delphi程序定义为:

procedure ExecuteService(const RequestJSON :PWideChar; out ResponseJSON :Pointer; out ResponseJSONSize :Integer; out ResponseContent :Pointer; out ResponseContentSize :Integer); stdcall;

和c#声明是:

 [DllImport("services.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)]
        public static extern void BIExecuteService(
            String requestJSON,
            out IntPtr reposnseJSON,
            out int reposnseJSONSize,
            out IntPtr reposnseContent,
            out int reposnseContentSize
        );

有时它可以工作但主要是它提供了System.AccessViolationException。

我一直试图解决这个问题,声明看起来是否正确?

编辑:在Delphi XE2中附加到IISExpress进程时,clr.dll中似乎发生错误。也许我的图书馆正在腐败,但我不知道如何找到它的位置!

谢谢,

AJ

1 个答案:

答案 0 :(得分:1)

你的p / invoke声明是正确的。你的问题在别的地方。