0

リンカがインラインアセンブリコードから未定義の参照エラーを生成するという問題があります。

int global_var = 0;
void myfunc()
{
    asm(".intel_syntax noprefix\n");
    asm("lea eax, global_var\n");
}

私は-masm=intelを使用してコンパイルしており、最適化などは行われていません。GCC3.4.2を使用しています。この不便に苦しんでいる人もいれば、支援してください。

4

1 に答える 1

1

基本的に、これは名前マングリングの問題です。つまり、コンパイラはコンパイル段階で変数と関数の名前をマングル (変更) します。この場合、「global_var」は「_global_var」に変更されます

「_global_var」にアクセスするように関数の 2 行目を変更すると、正常にコンパイルされます。(テスト済み GCC 4.7.1)

于 2013-02-03T19:55:24.713 に答える