タグ

関数とstdcallに関するtack07のブックマーク (1)

  • 二流プログラマの三流な日常: 関数呼び出しの内部を理解する(2)

    今回は、呼び出し規約について説明していきます。 呼び出し規約は関数の引数の引き渡し方、引数利用後の処理の仕方を制御します。 これが関数の装飾名にも影響を与えます。 例を挙げましょう。 関数の呼び出し元では第1引数はレジスタに記憶する、第2引数はスタックに積むというような約束事を作ります。 関数の呼び出し先では、第1引数はレジスタ、第2引数はスタックというように約束事を守るように引数を取得します。 このようなルールを作れば、違う言語における引数の引渡しが可能になります。 つまり、DLL関数が呼び出せない方は呼び出し元と呼び出し先で違う規約を使っている結果、装飾名が異なっている場合があります。 もう1つの原因は、次回に説明しますが、「extern "C"」キーワードを理解していない事です。 私が知っている呼び出し規約は以下の通りです。 cdecl(C規約) thiscall(C++メンバ関数規

  • 1