3

reconstructMe SDKの「1分」の例をコーディングしようとしていますが、SDKはC ++であると思います。彼らのページ(ここ)の指示に従ってコンソールアプリケーションを正常に作成しましたが、単純なUIを作成したいと思います。ただし、私はVisual c ++にあまり精通していないため(c ++についてはよく知っています)、C#の例を試しました(UIデザインにはかなり精通しています)が、提供されているC#コードを使用するとこのエラーが発生します(ここ):

PInvoke関数'Lala!Lala.Reme :: reme_context_compile'を呼び出すと、スタックのバランスが崩れます。これは、マネージドPInvokeシグニチャがアンマネージドターゲットシグニチャと一致しないことが原因である可能性があります。PInvokeシグニチャの呼び出し規約とパラメータがターゲットのアンマネージドシグニチャと一致することを確認してください。

プロジェクトの設定などの問題だと思います。

4

1 に答える 1

1

reconstructMe DLLは、Windowsの呼び出し規約()ではなく、 Cの呼び出し規約( )を使用しています。スタックの処理方法が異なるため、呼び出し規約が正しくないとスタックが不均衡になります。CdeclStdCall

p / Invokeのデフォルトはです。属性で、 CallingConvensionパラメーターをStdCall手動で設定する必要があります。CdeclDllImport

[DllImport("example.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int function(int param);
于 2012-10-29T16:14:05.163 に答える