![](/img/trans.png)
[英]function is in one of object files but linker doesn't link them
[英]Using MASM to generate Object files and link them with MSVC Object Files
我想將僅包含一個函數的程序集文件與從中生成的目標文件鏈接起來。 我想知道如何在 MASM 中創建 .obj 文件,我還需要知道如何創建這樣的函數。 這對於將兩個整數相加的函數是否足夠?
intadd PROC int1:DWORD int2:DWORD
mov eax, int1
mov ebx, int2
add eax, ebx
intadd ENDP
如果我創建並鏈接 obj 文件,我可以做
int x = intadd(1,1);
收到2?
總結一下:如果 MASM 包含上述宏,我需要知道如何從 MASM 創建 .obj 文件,以及如果我的代碼不起作用,如何從 HLL 調用宏。
我相信 Visual C++ 的標准安裝也會安裝ml.exe
和ml64.exe
,這兩者都會生成與 Visual C++ 的link.exe
版本兼容的.obj
文件。
你可以做的是,一旦你用ml /c asmfile.asm
將你的程序集文件組裝成一個.obj
文件,在你的.c
文件中,添加以下行:
extern int intadd(DWORD int1, DWORD int2);
使用cl /c cfile.c
編譯您的.c
代碼,然后使用link asmfile.obj cfile.obj /OUT:exefile.exe
將兩個.obj
文件鏈接到最終的可執行文件中。
但是請注意,您的匯編函數是無效的,因為一旦您缺少ret
語句 - 調用它會使您的程序崩潰。
如果您正在尋找有關如何將程序集文件集成到 Visual Studio 中的 Visual C++ 項目的信息, 這個問題有一些信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.