2

次の Web サイトから MASM32 + SDK をダウンロードして解凍しました: http://www.masm32.com/masmdl.htm

次に、ml.exe と link.exe を使用して、次のプログラムをコンパイルおよびリンクしました。

.386
.model flat, stdcall

; Windows libraries
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
extrn MessageBoxA@16 : PROC
extrn ExitProcess@4 : PROC

option casemap:none ; Treat labels as case-sensitive

.DATA           ; Begin initialized data segment
  ProgramTitle db "Hello, puny humans!", 0 ; define byte
  DisplayText db "Wahahaha", 0

.CODE           ; Begin code segment
_main PROC

  push 0
  mov eax, offset ProgramTitle
  push eax
  push offset DisplayText
  push 0

  call MessageBoxA@16
  call ExitProcess@4

  ret
_main ENDP

END 

コマンドライン:

ml /c test.asm
link /entry:_main /subsystem:windows test.obj

出力:

ml /c test.asm
    Assembling:  test.asm

link /entry:_main /subsystem:windows test.obj    
    test.obj : warning LNK4033: converting object format from OMF to COFF
    test.obj : error LNK2001: unresolved external symbol _MessageBoxA@16
    test.obj : error LNK2001: unresolved external symbol _ExitProcess@4
    test.exe : fatal error LNK1120: 2 unresolved externals

.obj ファイルでダンプビンを実行しようとしています:

Dump of file test.obj
test.obj : warning LNK4048: Invalid format file; ignored

    Summary

MASM32 (ml.exe v. 6.14) の既定の機能と、すぐに使用できるライブラリを使用してファイルをリンクできないのは、私には奇妙に思えます。

4

2 に答える 2

3

プログラムは、/coff オプションを使用してコンパイルする必要があります。ml 6.14 は OMF にデフォルト設定されています。これが、dumpbin がファイルを拒否し (COFF のみを受け入れる)、リンカが「オブジェクト形式を OMF から COFF に変換しています」という警告を表示する原因です。

ml /c /coff test.asm

dumpbin の出力には、次の内容が反映されています。

File Type: COFF OBJECT

    Summary

        1D .data
        48 .drectve
        1A .text

また、test.exe と Microsoft の著作権表示以外のリンカからの出力はありません。

ノート:

ML.EXE 6.14 は約 20 年前のものです。(ウィキペディア)

バージョン 7.0 以降は、Visual C++ 開発環境にバンドルされています。バージョン 8.0+ には特定の制限があります: ( masm32.com )

「バージョン 7.0 以降は、Microsoft Visual C++ 開発環境のコンポーネントであり、Microsoft Windows の後続バージョン用の多数のデバイス開発キットでも利用できるようになっています。バージョン 8.0 以降は、EULA に基づいて Microsoft から無料でダウンロードできます。無料版の使用は、Microsoft オペレーティング システム用のコードの開発に限定されています。」

MASM 8.0 は、http: //www.microsoft.com/en-us/download/details.aspx? id=12654 から入手できます。

于 2013-03-26T02:08:58.173 に答える