次のように一連の関数を呼び出すプログラムがあります。
int _stdcall VB_Create(char*);
int _stdcall VB_Open(unsigned int, unsigned int, unsigned int, unsigned int);
...
...
名前の装飾に不一致がある場合、リンカは次のようなエラーを表示します。
error LNK2019: unresolved external symbol "int __stdcall VB_Create(char *)" (?VB_Create@@YGHPAD@Z) .....
私の理解では、_stdcall
構文は'_' + 'name of the function' + '@' + 'number of arguments * 4'
です。
では、なぜリンカーが?VB_Create@@YGHPAD@Z
名前の装飾を求めているのでしょうか。これはどのような基準ですか?