2011-09-16 6 views
4

C++プログラム(VC++ 10)から呼び出す必要のあるx86 DLL(ソースはありません)があります。C++サポートされていない呼び出し規約でコードを呼び出す方法

最初の3つのパラメータがEAX、ECXおよびEDXレジスタに渡され、呼び出し先スタックのクリーンアップ(浮動小数点のargs/returnなどの他の詳細と同様に)が、左から右に呼び出されました。

これを自動化するいくつかの方法がありますか(たとえば、数百の関数定義のそれぞれが含まれているファイルから生成するか、コンベンションについてコンパイラに「分かりやすく」伝えることができます) ?それが役に立つなら、使用される型はすべて素敵な単純なもの(void、int、char *、floatなど)です。

+0

可能な複製[カスタム関数のエントリと終了コードを挿入するコンパイラ機能はありますか?](http://stackoverflow.com/questions/1472769/is-there-a-compiler-feature-to-inject-custom -function-entry-and-exit-code) – Jon

+1

明確にするために、カスタムエントリと終了コード=サポートされていない呼び出し規約に適応する独自のアセンブリコード。 – Jon

+0

あなたがそこに着いた後、呼び出された関数内に何かをしているのですか?しかし、私はコールサイトで何かをする必要がありますか? –

答えて

2

私はlibffiを見て始めます。

関連する問題