Windows下exe和dll文件怎么判定自己该链接何种版本的c运行时库的研究

Windows下的exe和dll文件是COFF/PE文件格式的文件。
通过了解Windows的COFF/PE文件结构,
可以知道:
COFF/PE文件结构里有一个可选文件头。
在IMAGE_OPTIONAL_HEADER32可选头文件结构里BYTE类型字段MajorLinkerVersion创建可执行文件的链接器的主版本号。
对于Microsoft的链接器生成的PE文件,这个版本号与Visual Studio的版本号相一致。
BYTE类型字段MinorLinkerVersion表示创建可执行文件的链接器的次版本号。

使用vc6.0和vs2103编译一样的代码,用dumpbin.exe查看exe文件的结构比较如下图,
在可选文件头OPTIONAL HEADER VALUES里字段entry point对应的就是c运行时库连接的入口地址,
下图左边是vc6.0编译的,
有图是vs2013编译的,
可以看到vs2013编译的程序entry point版本@ILT+120(_wmainCRTStartup)跟vs2013的c运行时库版本msvcr120.dll是一致的,
可以知道,编译器在变以EXE、dll时,就在生成文件里包含了要连接c运行时库版本信息的:
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值