Delphi XE2 でコンパイルされた dll の c# dllimport 宣言を誰かがチェックできるかどうか疑問に思っています。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 でエラーが発生するようです。私のライブラリが何かを壊しているのかもしれませんが、どこを見つけるかわかりません!
ありがとう、
AJ