【问题标题】:In .NET, how to identify if a C++ DLL is in DEBUG or RELEASE build?在 .NET 中,如何识别 C++ DLL 是在 DEBUG 还是 RELEASE 构建中?
【发布时间】:2012-06-05 13:22:44
【问题描述】:

感谢网络上的一些资源,我制作了一个小工具来了解我的 .NET dll 是在调试还是在发布版本;但我希望它也适用于 c/c++ DLL。

有人有这方面的代码吗? DLL 是使用 Visual Studio 编译的。

【问题讨论】:

标签: c# c++ dll build release


【解决方案1】:

据我所知,仅查看 DLL 无法说明此类事情。在我们的工作中,我们使用不同的名称来调试 dll(在末尾添加一个 D)并使用预处理器。

由于 Debug 或 Release 构建只是编译器的一组属性,您最终可能会得到一个 Debug 构建,它可以像 Release 那样编译,反之亦然。

总结一下,我觉得没办法,不好意思。

【讨论】:

  • 一定有一些库或函数导入差异
  • 这取决于您如何配置发布或调试配置。它们只是一堆设置。
  • 当他自己配置和构建 C++ DLL 时,他可以使用FileVersionInfo.IsDebug 方式使其工作。
【解决方案2】:

【讨论】:

  • 该链接是检查是否包含调试信息。不是调试版本。发布版本也可以包含调试信息
  • 它没有用。对于在调试模式下构建的 DLL,它返回 false
【解决方案3】:

信息通常包含在PE header 中。你可以写一些代码来解析它。

【讨论】:

  • 版本信息块也可能有帮助。看看这里的定义msdn.microsoft.com/en-us/library/aa381058(VS.85).aspx。不过,我认为任何事情都不会 100% 准确。
  • 请记住,这在某些情况下可行,但在其他情况下则不行,因为可以将配置更改为您想要的任何内容。
猜你喜欢
  • 2010-10-22
  • 1970-01-01
  • 2015-06-25
  • 2013-03-21
  • 1970-01-01
  • 2012-02-22
  • 2017-05-10
相关资源
最近更新 更多