kir*_*ora 4 x86 assembly masm msvcrt visual-studio
.386
.model flat, c
.stack 100h
printf PROTO arg1:Ptr Byte
.data
msg1 byte "Hello World!", 0Ah, 0
.code
main proc
INVOKE printf, ADDR msg1
ret
main endp
end main
Run Code Online (Sandbox Code Playgroud)
嗨,我收到以下错误:
我四处搜索,发现有人说可以通过链接微软运行时库来修复它
任何人都可以教我如何才能完全解决它?
谢谢
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol _printf referenced in function _main testing C:\Users\Kin\Desktop\assembly\testing\testing\Source.obj 1
Error LNK1120 1 unresolved externals testing C:\Users\Kin\Desktop\assembly\testing\Debug\testing.exe 1
Run Code Online (Sandbox Code Playgroud)
我没有安装VS 2017试试这个.重要提示:确保创建一个Console Application而不是一个Windows Application.创建此项目后,请确保将MASM添加到构建自定义项中.将.ASM文件添加到项目中.
获取代码并在顶部插入以下行:
includelib libcmt.lib
includelib libvcruntime.lib
includelib libucrt.lib
includelib legacy_stdio_definitions.lib
Run Code Online (Sandbox Code Playgroud)
可以在此Stackoverflow答案中找到有关为什么在Visual Studio中晚于2013年需要这些行的原因的说明.
您希望C运行时成为控制台应用程序的入口点(然后它将调用您的main).因此,你必须main从最后一行中删除end main.当你这样做end main时绕过C运行时启动启动.无法正确初始化C运行时可能会导致程序在您拨打电话时崩溃printf.应该简单end而不是end main.
您应该测试的最终代码是:
includelib libcmt.lib
includelib libvcruntime.lib
includelib libucrt.lib
includelib legacy_stdio_definitions.lib
.386
.model flat, c
.stack 100h
printf PROTO arg1:Ptr Byte
.data
msg1 byte "Hello World!", 0Ah, 0
.code
main proc
INVOKE printf, ADDR msg1
ret
main endp
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5899 次 |
| 最近记录: |