1

完全なネイティブC++コードdllを作成し、P / Invokeを使用してC#コードを介して彼のメソッドを呼び出したいと思います。このためにネイティブdllのプロパティで何かを変更する必要がありますか?

4

2 に答える 2

3

P / Invokingには、stdcall規則が必要です。したがって、すべての関数宣言の前に__stdcallが付いているかどうかを確認してください。そうしないと、スタックが破損します。

また、アンマネージC++関数へのPInvokeStackImbalanceC#呼び出しも確認してください。

于 2012-06-05T14:36:23.827 に答える
1

いいえ、DLL自体のプロパティを変更する必要はありませんが、呼び出し規約がC#で使用されている規約と一致していることを確認する必要があります。次に、C ++の引数と戻り値の型に一致するC#で呼び出し可能な関数を宣言する必要があります。

これで、C#で関数を呼び出すことができます。

C ++関数の呼び出し規約に加えて、それはかなり簡単なはずです。

于 2012-06-05T14:31:36.210 に答える