わかりましたので、NASM でコードを組み立て、Golink でリンクしています。DLL を介して Windows API 呼び出しと C 呼び出しを直接使用しています。たとえば、ExitProcess などの場合は kernel32.dll、printf などの場合は msvcrt.dll です。ただし、このような装飾を使用しようとすると、_ExitProcess@4または_printf golink が装飾について不平を言い、/mixフラグの使用を提案します。私がそれを使用すると、Windowsは出力ファイルが有効なwin32プログラムではないと文句を言います。装飾を使用しない場合は正常に動作します。誰が何が起きているのか説明できますか?
例:
extern printf
extern ExitProcess
;A bunch of code which isn't really important to this
次に私のコマンド:
nasm -fwin32 test.asm
golink test.obj kernel32.dll msvcrt.dll /console /entry _start