1

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

4

1 に答える 1

1

あなたの p/invoke 宣言は正しいです。あなたの問題は別のところにあります。

于 2013-08-11T18:14:58.380 に答える