cpp。cpp:
#include <iostream>
extern "C" int returnnum();
int main() { std::cout << returnnum() << "\n"; }
asm。asm:
segment .text
global _returnnum
_returnnum:
mov rax, 420
ret
首先,我用
nasm -f win64 asm.asm
.
然后,我用
g++ cpp.cpp asm.obj
.
但这给了我一个错误:
asm.obj: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
我知道我可以改变
rax
到
eax
并使用编译
-f win32
它可以工作,但我想要一个64位的应用程序。我有什么办法可以做到这一点吗?
如果这有帮助:
g++ --version
:g++(MinGW.org GCC-6.3.0-1)6.3.0
nasm --version
:NASM版本2.15rc12于2020年6月26日编译