我想知道是否有人可以查看我使用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
答案 0 :(得分:1)
你的p / invoke声明是正确的。你的问题在别的地方。