gpt4 book ai didi

visual-studio - 在 Visual Studio 中从 asm 调用 C 标准库函数

转载 作者:行者123 更新时间:2023-12-04 13:13:11 25 4
gpt4 key购买 nike

我在从 Visual Studio(Win10 x64、Visual Studio 2015)中创建的 asm 项目中调用 C 函数时遇到问题。项目由一个 asm 文件组成:

.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

当我构建项目时,链接器输出错误:

Error LNK2019 unresolved external symbol _printf referenced in function _main@0



链接器输出参数:

/OUT:"C:\Users\apple\Documents\SP_Lab7\Debug\SP_Lab7_Demo.exe" /MANIFEST:NO /NXCOMPAT /PDB:"C:\Users\apple\Documents\SP_Lab7\Debug\SP_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:\Users\apple\Documents\SP_Lab7\Debug\SP_Lab7_Demo.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\SP_Lab7_Demo.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1



如果我评论 call print ,然后一切正常执行(甚至 Windows API 函数)。有没有办法从 asm 文件调用 C 函数而不创建包含 <cstdio> 的 cpp 文件? ?
有可能吗?

最佳答案

Microsoft 在 VS 2015 中重构了大部分 C 运行时和库。一些函数不再从 C 库中导出(有些在 C 头文件中定义)。 Microsoft 有一些兼容性库,例如 legacy_stdio_definitions.lib 和 legacy_stdio_wide_specifiers.lib,但您也可以选择将较旧的 Visual Studio 2013 平台工具集与较旧的 C 库一起使用。

要更改平台工具集:下拉 Project菜单;选择 Properties... ;转至 Configuration Properties/General ,并更改 Platform Toolset Visual Studio 2013 (v120)

关于visual-studio - 在 Visual Studio 中从 asm 调用 C 标准库函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33721059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com