2017-01-30 13 views
-1

私は、取得しているクラスでVisual Studio 2015を初めて使用しようとしています。私はいくつかのチュートリアルを使用して、Visual Studioを複数回再ダウンロードしましたが、同じ問題を抱えています。Visual Studio 2015アセンブリ言語プロジェクトの構文エラー

上部のコメント(最初の2行)に赤で下線が引かれ、「この宣言にはストレージクラスまたは型指定子がありません」というエラーメッセージが表示されます。 私はVisual Studioを使いこなし始めたが、週末に解決策を見つけられなかったので、設定で何かを混乱させたと仮定しています。誰がこれを見たか、何が起こっている可能性について何か考えがありますか?ここで

は、私はで動作するように与えられたサンプルコードのコピーである。このようexample.asmなど.asmファイルへ

; AddTwo.asm - adds two 32 - bit integers. 
; Chapter 3 example 

.386 
.model flat,stdcall 
.stack 4096 

ExitProcess proto,dwExitCode:dword 
.code 

main proc 
    mov eax,5 
    add eax,6    
    invoke ExitProcess,0 
main endp 
end main 
+3

これはC++コードではありません。どのようにコンパイルしようとしていますか? – qxz

+0

申し訳ありませんが、わかりませんでした。私が初めてやっているアセンブリ言語のコードです。私が与えたすべての設定手順はC++に関連しています –

+0

あなたはそのコードをアセンブリファイルに入れて、C++ではなくアセンブリとしてコンパイルする必要があります。 – qxz

答えて

0

の変更、ファイルの種類、。空のプロジェクトを作成し、.asmファイルをプロジェクトに追加します。

デバッグビルドコマンドライン:

ml /c /Zi /Fo$(OutDir)\example.obj example.asm 

リリースビルドコマンドライン:

ml /c /Fo$(OutDir)\example.obj example.asm 
プロジェクトウィンドウから、右.ASMファイル名をクリックし、[プロパティ]を、その後、これらのカスタムビルドステップを追加します

両方のデバッグとリリースビルド出力ファイル:

$(OutDir)\example.obj 

例ASMファイル:

 .586p 
     .model flat,c 
     .data   ; initialized data 
     .data?   ;uninitialized data 
     .stack 4096 
     .code 
main proc near 
     mov  eax,5 
     add  eax,6 
     xor  eax,eax 
     ret 
main endp 
     end 

注 - は、Visual Studio 2015を使用している場合は、printf関数は現在、インクルードファイルの一部であり、効果的にC/C++ファイルにインライン化されます。これはasmからのprintfの呼び出しを問題にします。 1つの解決策は、printfを生成するためにC/C++ファイルを使用して、C/C++とasmファイルの両方を持つプロジェクトを作成することです。

+1

プロジェクトを作成し、ビルドの依存関係を変更したり、カスタマイズをビルドしたり、MASMターゲットを追加したりして、必要に応じてASMファイルをプロジェクトに追加することはできませんか?私はカスタムルールが必要だとは思っていませんが、何かが欠けている可能性があります。 –

+0

@MichaelPetch - プロジェクトの作成時に.asmファイルのデフォルト設定を選択するかどうかによって異なります。場合によってはうまくいかなかったり、逃したりしてしまったので、カスタムビルドコマンドラインと出力ファイルを手作業で入力しなければなりませんでした。さまざまなバージョンのVisual Studioが問題になっています。私は、それらのいくつかがデフォルトの.asmファイルを作成していないことを思い出しているようですが、プロジェクトを作成するときに何かを逃した可能性があります。 – rcgldr

+0

ほとんどの場合、ASMはデフォルトでは作成されません。 VS 2015では、これはまだ真実です。新しいプロジェクトを作成し、プロジェクトを右クリックして、メニューに「依存関係を構築する」項目がある場合は、「ビルドのカスタマイズ」を選択してリストからMASMを選択します。 ASMファイルをプロジェクトに追加すると、ASMファイルは自動的にアセンブル/リンクされます。 ASMファイルを追加した後でビルド依存関係の変更手順を実行する場合は、各ASMファイルのプロパティを右クリックしてビルドの一部としてマークする必要があります(項目タイプとMicrosoft Macro Assembler経由) –

関連する問題