web-dev-qa-db-ja.com

Visual Studioの外部アセンブリファイル

検索したところ、__asm Visual Studioのx64。代わりに、外部アセンブリファイルを使用する必要があります。

外部アセンブリファイルをwin32コンソールプロジェクトに追加するにはどうすればよいですか?

それらをどのようにコンパイルできますか?

ステップバイステップで説明できますか。

17
user3864147

Visual Studioでx64アセンブリファイルを使用して混合ソースx64プロジェクトをビルドする方法

1)Visual Studio(Community)2015を起動し、_FILE - New - Project_を選択します。

Screenshot

2)次のウィンドウで_Win 32 Console Application_を選択します。

Screenshot

3)確認が得られます。 _Next >_をクリックします。

Screenshot

4)次のウィンドウで、デフォルト設定を受け入れます。 Finishをクリックします。

Screenshot

5)ソリューションエクスプローラーでプロジェクトが強調表示されていることを確認し、メニューから_PROJECT - Build Customizations..._を選択します。

Screenshot

6)次のウィンドウでmasm(.targets,.props)にチェックマークを付け、OKをクリックします。

Screenshot

7)_Build - Configuration Manager..._を選択します

Screenshot

8)_Active solution platform_をx64に変更します。

Screenshot

9)callee.asm:_PROJECT - Add New Item_を作成します。

Screenshot

10)次のウィンドウでC++File(.cpp)を選択し、-重要!-_.asm_拡張子の付いた名前を付けます。 Addをクリックします。

Screenshot

10)次に、_.asm_ファイルに正しいプロパティがあるかどうかを確認します。ソリューションエクスプローラーでファイルを右クリックし、Propertiesを選択します。

Screenshot

11)プロパティページには、少なくとも次のものが表示されます。

_Excluded From Build    (empty) or No
Item Type              Microsoft Macro Assembler
_

Screenshot

_Command Line_の下で、_ml64.exe_がアセンブラーとして選択されていることを確認します。

Screenshot

OKをクリックします。

12)これで、ファイルにコンテンツを入力できます。

ConsoleApplication1.cpp:

_#include <iostream>
using namespace std;

extern "C" void hello_from_asm();

int main()
{
    cout << "Hello from CPP" << endl;
    hello_from_asm();
    return 0;
}
_

callee.asm:

_PUBLIC hello_from_asm
EXTERN puts:PROC

.data

    hello1 db "Hello from ASM.",0

.code

hello_from_asm PROC
    Push rbp
    mov rbp, rsp
    sub rsp, 32                 ; Shadow Space
    and spl, -16                ; Align stack at 16

    lea rcx, hello1
    call puts

    leave                       ; Restore stack (rsp) & frame pointer (rbp)
    ret
hello_from_asm ENDP

END
_

13).exeをビルドします

Screenshot

そしてそれを実行する CTRL-F5

アプリケーションが新しいウィンドウで開きます。

40
rkhb