如何检查VC++生成的二进制exe的运行时库类型

2024-03-10

用于对现有构建(二进制文件集、exe、dll、lib)进行故障排除。

有没有办法使用 SDK 或其他实用程序中的命令行工具来快速检查目标文件编译时所针对的运行时库类型?

例如,给定的 .dll 显然是针对动态运行时编译的(但如果它是调试或发布版本,则仍然不明显)。

而在 .exe 的情况下则更困难(确定是否使用动态/静态和调试/发布)。

(我的意思是,无需打开 VC++ 项目文件或查看 nmake / msbuild 文件中使用的编译器选项)。


dumpbin /dependents将允许您确定模块(EXE 或 DLL)是否依赖于 Visual C++ 库 DLL(以及这些 DLL 的版本和风格 - 调试或发布)。例如,使用 Visual C++ 2013...

当你编译时/MD,您的模块取决于零售 msvcr120.dll:

>cl /MD /nologo test.cpp
test.cpp

>dumpbin /dependents test.exe | findstr dll
    MSVCR120.dll
    KERNEL32.dll

当你编译时/MDd,您的模块依赖于调试msvcr120d.dll:

>cl /MDd /nologo test.cpp
test.cpp

>dumpbin /dependents test.exe | findstr dll
    MSVCR120D.dll
    KERNEL32.dll

当你编译时/MT or /MTd,您的模块不依赖于任何 CRT DLL:

>cl /MT /nologo test.cpp
test.cpp

>dumpbin /dependents test.exe | findstr dll
    KERNEL32.dll

>cl /MTd /nologo test.cpp
test.cpp

>dumpbin /dependents test.exe | findstr dll
    KERNEL32.dll

当您静态链接 Visual C++ 库时,通常无法判断是否链接了零售库或调试库(通常您无法判断是否链接了任何 Visual C++ 库)。如果您的模块有 PDB,则通常可以使用它根据源文件信息和模块中存在的函数来确定链接的内容。

(两个注释:[1] 我的 test.cpp 文件是一个简单的 C Hello, World! 程序。如果它动态链接其他 Visual C++ 库,dumpbin /dependents也会举报他们。 [2]dumpbin /dependents与 DLL 的配合也同样良好。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查VC++生成的二进制exe的运行时库类型 的相关文章

随机推荐

  • 如何从控制台应用程序打开WPF窗口[重复]

    这个问题在这里已经有答案了 我刚刚制作了一个简单的控制台应用程序 现在我想打开 WPF 窗口 我将 WPF 项目添加到我的应用程序中 P 但我不知道如何从我的 Main 打开这个窗口 我希望 some1 可以帮助我 Application
  • 如何从 Perl 中的外部命令中丢弃 STDERR?

    我想捕获外部命令的退出代码 同时用自定义错误消息替换其标准错误输出 my ret system which mysql if ret 0 say Error If mysql可执行文件不存在 它显示which命令错误消息 这是我不想要的 如
  • 值对象应该保存对实体的引用吗?

    值对象是否应该引用 DDD 方法中的实体 EDIT Dmitry 这大概就是我的情况 这里我附上类图 其中Account保留对集合的引用IInvoiceable项目 我治疗与Tenant作为实体 但它只拥有 1 个帐户 我不认为Accoun
  • 如何在不手动运行 dbt deps 的情况下配置 DBT 依赖项?

    我是 DBT 新手 目前正在尝试构建一个 Docker 容器 我可以在其中直接运行 DBT 命令 我有一个导出环境变量的文件 envs sh 看起来像 export DB HOST secret export DB PWD evenabig
  • 黄瓜、水豚和硒 - 提交不带按钮的表单

    我使用 Cucumber capybara 和 selenium 驱动程序进行了测试 该测试应填写表格并提交 正常的文本是 Scenario Fill form Given I am on the Form page When I fill
  • 为什么 ASP.NET MVC 控制器类需要公开?

    当我更改控制器类的访问修饰符时 会导致错误 如果我将操作方法 的可访问性设置为非公开 那么它也会导致错误 特别是找不到网页错误 为什么会这样呢 默认情况下 如果您没有为类指定任何访问修饰符 那么它将默认为internal在 C 中 只有同一
  • ( ... ) 和 { ... } 如何与 bash 中的管道创建子 shell 交互?

    我试图了解使用圆括号和大括号的 shell 子进程调用之间的区别 我认为大括号不会启动子进程 但它们似乎确实启动了子进程 bin sh a 1 b 1 a 2 a 3 b 2 b 3 echo a a echo b b 该脚本打印 a 1
  • 在任意时区之间转换

    我正在尝试找到一种简单而强大的方法来在任意时区之间转换时间 This http www cpearson com excel TimeZoneAndDaylightTime aspx http www cpearson com excel
  • 有没有一种方法可以在没有用户的情况下访问 LinkedIn API

    我正在构建一个使用 REST API 从 LinkedIn 获取数据的应用程序 当我的用户拥有 LinkedIn 帐户时 我使用 OAuth 代表用户进行身份验证和访问数据 我的问题是当用户没有 LinkedIn 帐户时 在这种情况下 我想
  • C# 和 Word - 用格式替换

    我试图做的最简单的形式是在预先存在的 Word 文档上填写一些信息 我的代码做得很好 它没有做的是按照需要修复格式 替换的文本需要设为黑色并加粗 表格上的总计字段需要右对齐 如果有人能指出我如何在我的代码中做到这一点 我将不胜感激 这是我当
  • UIScrollView 可滚动内容大小不明确

    各位开发者 我在 Interface Builder Xcode 5 iOS 7 中使用 AutoLayout 时遇到问题 这是非常基本和重要的 所以我认为每个人都应该知道它是如何正常工作的 如果这是 Xcode 中的一个错误 那么它是一个
  • TitleView 未覆盖整个工具栏

    我正在开发通知计数Toolbar using TitleView 里面TitleView我用过RelativeLayout这是从顶部裁剪未显示完整计数圆Label 这是我的代码
  • Playstore 展示 Beta 标签床边制作应用

    前几天 我推广了我的测试版 open beta test 应用于生产 一切顺利 我可以在 Playstore 中搜索我的应用程序 但有一个问题 playstore没有删除 beta 我的应用程序名称旁边的标签 我想删除那个标签 我该怎么做或
  • ASP.NET MVC 单点登录和角色

    我使用类似于以下方法的内容跨 2 个 MVC 站点 称为 SiteA 和 SiteB 进行基本的单点登录 http forums asp net p 1023838 2614630 aspx http forums asp net p 10
  • Firefox 单选按钮怪异

    我有一个包含很多无线电组的表格 每个无线电都有一个唯一的 ID 并且与其组中的其他无线电具有相同的名称 该页面验证为 XHTML 过渡页面 在 IE6 和 7 Opera Safari 和 Chrome 中进行了测试 它的工作方式与您想象的
  • 领域驱动设计模式 - 从领域访问存储库

    我一直致力于将领域驱动设计模式应用到我们的 Web 应用程序中 我们遇到的问题之一是避免使用实体内的存储库 例如 我们有一些实体 其方法将触发电子邮件 因此 我们必须有权访问电子邮件模板 存储在数据库中 并在数据库队列表中创建新的电子邮件记
  • 顺序或并行启动存储过程

    我们有一个每晚运行的存储过程 进而启动许多其他过程 其中一些程序在逻辑上可以与其他一些程序并行运行 我如何向 SQL Server 指示一个过程应该并行运行还是串行运行 即 异步启动还是阻塞运行 并行运行它们会产生什么影响 请记住 我已经确
  • java 类在同一个包中找不到其他类

    我正在ubuntu中实现一个java程序 没有将货币转换为欧元的IDE 我有2个类ConvertiEuro和Valuta都在名为finanza的同一目录 包 中 当我尝试编译Valuta时 类ConvertiEuro使用类Valuta ja
  • SQL 差异的原因

    尽管存在 SQL 的 ANSI 标准 但为什么 SQL 发行版如此不标准 SQL 数据库的工作方式真的有那么多有意义的差异吗 还是只是我一直使用的两个数据库 MS SQL 和 PostgreSQL 为什么会出现这些差异 ANSI 标准仅指定
  • 如何检查VC++生成的二进制exe的运行时库类型

    用于对现有构建 二进制文件集 exe dll lib 进行故障排除 有没有办法使用 SDK 或其他实用程序中的命令行工具来快速检查目标文件编译时所针对的运行时库类型 例如 给定的 dll 显然是针对动态运行时编译的 但如果它是调试或发布版本