zoukankan      html  css  js  c++  java
  • 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。
  • 相关阅读:
    foreach_and_函数
    集合
    二维数组
    二维数组的操作
    字符串类型的一些操作
    数组循环的操作及思路
    数组操作
    js各种获取当前窗口页面宽度、高度的方法
    Jquery 获取 radio选中值,select选中值
    jQuery效果:隐藏、显示、切换、滑动、淡入淡出、动画
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3261769.html
Copyright © 2011-2022 走看看