2017-12-24 6 views
-1

私はGoogleを介して調査しており、http://www.cs.virginia.edu/~evans/cs216/guides/vsasm.htmlを参照していますが、これが見つからないというエラーを修正する方法は誰にもありますか? 'clear();' extern "C"にはエラーが見つかりません。私はこの質問が解決できるほど具体的であることを願っています。アドバイスをいただければ幸いです。Visual Studioで見つからなかったエラーに関する詳細な問い合わせ2017

これは.cppファイルです。

extern "C" { 
    void clear(); 
} 

int main() { 
    clear(); 
    return 1; 
} 

これは.asmファイルです。

.586    ;Target processor. Use instructions for Pentium class machines 
.MODEL FLAT, C ;Use the flat memory model. Use C calling conventions 
.STACK   ;Define a stack segment of 1KB (Not required for this example) 
.DATA    ;Create a near data segment. Local variables are declared after 
       ;this directive (Not required for this example) 
.CODE    ;Indicates the start of a code segment. 

clear PROC 
    xor eax, eax 
    xor ebx, ebx 
ret 
clear ENDP 
END 

Visual Studioでは、ビルドカスタマイズファイルでmasmを有効にしています。ビルドセットから「いいえ」を除外しました。

カスタムビルドステップのコマンドラインプロパティは次のようになります。

ml /Cx /coff clear.asm /link /SUBSYSTEM:console /out:go /entry:clear 

私が個別に/ソリューション/プロジェクトに各ファイルを構築するとき、それは成功したが、私は()だからこそ明確に把握することはできません。 '次の - >は、見つからないエラーを示す緑色の波状をしています。

extern "C" { 
    void clear(); 
} 
+1

リンカエラーですか、Intellisenseだけが混乱していますか? – Quentin

+1

正確なエラーを引用してください。 –

+0

@RichardCritten '' clear 'の関数定義が見つかりませんでした。' –

答えて

-1

asmファイルの名前を「クリア」ではなく「_clear」に変更してください。

+0

これの背後にある根拠は何ですか? – VTT

+0

彼女は '.MODEL FLAT、C'を使用しています。 'C'は、表示される' PROC'ステートメントのデフォルト規則をCDECLに変更します。 CDECLの大会では、MASMがあなたのために '_ 'の前に置かれます。私の知る限り、彼女の問題は実際にはコードをコンパイル/リンクしているわけではありません。問題は、VSが外部アセンブリーモジュールで定義されている「クリア」を認識しないことです。私はVSが(それ自体で)このOPがやろうとしていることをサポートしているとは思わない - 緑色の波状線が消える –

関連する問題