Windows SDK 中是否有工具可以检查库使用的 CRT?例如我有一个 *.lib 文件,如何检查它是用 /MDd 标志还是 /MT 编译的?还如何检查 dll 或 exe 是否相同?这可以用垃圾箱完成吗?
问问题
8065 次
1 回答
17
如果它是一个 .lib 文件,一个静态链接库,那么你对 CRT 还一无所知。它还没有关联。您可以了解原始程序员的意图,使用十六进制查看器查看 .lib 文件,记事本也可以。您将看到用于编译嵌入在 .lib 文件中的 .obj 文件的原始命令行。只需搜索“cl.exe”,您就会很清楚从 cl.exe 的路径中使用了哪个编译器版本。你可以看到命令行选项,这样你就会知道 /MD 或 /MT 是否有效。和 /O 选项,重要的是要知道你是否有一个 Debug 或 Release 版本。
如果是 .dll 文件,则 dumpbin.exe /imports 是您的最佳选择。对 msvcrxxx.dll 文件的依赖将可见,其中 xxx 为版本号,如“120”。如果您看到它,则名称会告诉您是否使用了 /MD 或 /MDd,“d”附加到 CRT 的调试版本 如果缺少它,则您知道使用了 /MT 或 /MTd,没有提示构建风味可用。
遵循库所有者的建议总是最好的,当库的 CRT 版本或构建设置与您的不匹配时,您可能会遇到很多麻烦。您必须向他询问更新的可能性非零,YMMV。
于 2014-08-13T12:31:09.650 回答