检查运行时静态库或dll使用的是什么

时间:2014-08-13 11:05:53

标签: windows winapi msvcrt crt dumpbin

Windows SDK中是否有一个工具可以阻止库使用的CRT? 例如,我有一个* .lib文件,如何检查它是否用/ MDd标志或/ MT编译? 还有如何检查dll或exe相同? 这可以用dumpbin完成吗?

1 个答案:

答案 0 :(得分:14)

如果它是一个.lib文件,一个静态链接库,那么你还不知道有关CRT的任何信息。它尚未联系。你可以找到原始程序员的意图,使用十六进制查看器查看.lib文件,记事本也可以。您将看到用于编译嵌入在.lib文件中的.obj文件的原始命令行。只需搜索“cl.exe”,您就可以清楚地知道从cl.exe的路径使用了什么编译器版本。您可以看到命令行选项,以便您知道/ MD或/ MT是否生效。并且/ O选项对于了解您是否有调试或发布版本非常重要。

如果是.dll文件,则dumpbin.exe / imports是您的最佳选择。将显示对msvcrxxx.dll文件的依赖性,xxx的版本号如“120”。如果你看到它然后名称告诉你是否使用/ MD或/ MDd,CRT的调试版本附加“d”如果它丢失,那么你知道使用了/ MT或/ MTd,没有提示建立风味。

根据图书馆老板的建议总是最好的,当图书馆的CRT版本或版本设置与您的版本不匹配时,您会遇到很多麻烦。有了非零赔率,你必须要求他更新,YMMV。