はい、名前マングリングは 32 ビットと 64 ビットで異なります。正確なフォーマットをカバーする適切な記事は、ここにあります。ただし、両方のターゲットにコンパイルし、結果のマップ ファイルを調べるだけで、主な違いをすぐに確認できます。私の経験からすると、それらはほとんど同じです (64 ビットは小さなデータを追加し、他のデータを変更する可能性があります)。
簡単なサンプル:void foo();
32bit: ?foo@A@@QAEXXZ
64bit: ?foo@A@@QEAAXXZ
マングルされていない std 呼び出しの場合、パラメーター スタックの使用状況に応じて、長さのサフィックスが大幅に異なる場合があります。VC++ のデフォルトの 64 ビット設定では、先頭にアンダースコアを追加したり、長さのサフィックスをエンコードしたりしません。以下は、32 ビットと 64 ビットの両方の構成を、すぐに使用できる純粋な設定でコンパイルしたものです。
extern "C" int _stdcall func2(int, int, char*);
32bit: _func2@12
64bit: func2
そこにはあまり意味がありません。
_cdecl を分解して回路を完成させると、次のようになります。
extern "C" int _cdecl func2(int, int, char*);
32bit: _func2
64bit: func2
彼らがあなたが何をプルインまたはエクスポートしているのかをあなたに知らせるために邪魔をしたように見える場合、証拠はあなたがおそらく正しいことを示唆しています.