1

我想知道是否有人可以检查我的 c# dllimport 声明中是否有使用 Delphi XE2 编译的 dll。从 ISAPI 包装器 dll 调用此 dll 工作正常,但我没有运气从 ac#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 中。也许我的图书馆正在破坏某些东西,但我不知道如何找出哪里!

谢谢,

阿杰

4

1 回答 1

1

您的 p/invoke 声明是正确的。你的问题在别处。

于 2013-08-11T18:14:58.380 回答