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 日
uj5u.com熱心網友回復:
根據您從評論和g --version輸出中獲得的資訊,您似乎安裝了普通的MinGW(它是純 32 位的,如果您只需要構建 32 位可執行檔案就可以正常作業,因為 Windows 支持在 64 位作業系統上運行 32 位可執行檔案) 而不是MinGW-W64,本機支持 64 位 Windows 的分支。
如果要構建真正的 64 位可執行檔案,則需要進行切換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/486327.html
上一篇:訪問跨越MMU頁面邊界的變數
