• VS2008编译汇编程序的问题


    在VS2008 pro里已经集成了MASM,经过相关设置后,编译出了程序,但是执行后,说少msvcr90.dll
    39944
    然后自己写了个C的程序在DEPEND中对比了下两个的导入表。
    39946
    39945


    那个testprintf是执行正常的。
    虽然两个都有引入msvcr90.dll
    问下,这是为什么?

    说来生成的OBJ文件应该是正确的,可能在LINK的时候出了问题,请教下怎么设置。

    附源码,请教怎么在VS2008编译能正确执行。
    ;程序清单:cpuid.asm(读取CPU标识)
    .586
    .model flat,stdcall
    Option casemap:none
    includelib msvcrt.lib
    printf PROTO C :dword,:vararg
    .data
    szVendorID byte 13 dup (0)
    szFormatStr byte 'VendorID = %s; Processor SN = %08X%08X', 0ah
    .code
    start:
    mov eax, 0
    cpuid

    mov dword ptr szVendorID, ebx
    mov dword ptr szVendorID+4, edx
    mov dword ptr szVendorID+8, ecx

    mov eax, 3
    cpuid

    invoke printf, offset szFormatStr, 
    offset szVendorID, ecx, edx

    ret
    end start
    附:
    Visual Studio汇编语言环境配置
    http://blog.creke.net/629.html
     
    搞定了,我自己来答吧。后来在系统里搜msvcr又看到了msvcr90.dll复制到环境变量里的一个目录,执行报错,用depend查,printf出现了在导入表那。不知道,是不是在msvcr90.dll要调用printf,是不是要做一些相关初始化工作。
    正确的是
    配置属性-链接器-输入 中,将附加依赖项改为:
    C:masm32lib*
    我的MASM 9装在C:masm32
    这样链接时,msvcrt.lib就会使用masm9的那个引入库,会链接到MSVCR.DLL,而不是那个msvcr90.dll。
  • 相关阅读:
    基础数据类型
    python2x与python3x区别(30个)更新中。。。
    注释
    常量
    变量
    十、SpringCloud config分布式配置中心
    九、Gateway新一代网关
    八、Hystrix断路器(下)
    八、Hystrix断路器(上)
    七、OpenFeign服务接口调用
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3261769.html
Copyright © 2020-2023  润新知