I have a problem with calling C function from asm project created in visual studio (Win10 x64, Visual Studio 2015). Project consist of one asm file:
.586
.model flat, stdcall
option casemap:none
includelib msvcrt.lib
ExitProcess PROTO return:DWORD
extern printf:near
.data
text BYTE "Text", 0
.code
main PROC
push offset text
call printf
add esp,4
invoke ExitProcess,0
main ENDP
end main
When I build project, linker outputs the error:
Error LNK2019 unresolved external symbol _printf referenced in
function _main@0
Linker output parameters:
/OUT:"C:UsersappleDocumentsSP_Lab7DebugSP_Lab7_Demo.exe"
/MANIFEST:NO /NXCOMPAT
/PDB:"C:UsersappleDocumentsSP_Lab7DebugSP_Lab7_Demo.pdb"
/DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib"
"comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib"
"uuid.lib" "odbc32.lib" "odbccp32.lib" /MACHINE:X86 /SAFESEH:NO
/INCREMENTAL:NO
/PGD:"C:UsersappleDocumentsSP_Lab7DebugSP_Lab7_Demo.pgd"
/SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/ManifestFile:"DebugSP_Lab7_Demo.exe.intermediate.manifest"
/ERRORREPORT:PROMPT /NOLOGO /TLBID:1
If I comment call print
, then everything executes normally (even Windows API function). Is there any way to call C function from asm file without creating cpp file that includes <cstdio>
?
Is it possible to do?
Question&Answers:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…