【问题标题】:Using DLL in debug or release mode?在调试或发布模式下使用 DLL?
【发布时间】:2014-11-07 21:24:25
【问题描述】:

我在此链接sqlite-dll-win32-x86-3080600.zip 上从http://www.sqlite.org 下载了预编译的SQLite DLL。

我可以在调试和发布模式下使用同一个 DLL 吗?有什么区别,怎么可能?我正在使用 Visual C++ 2012 编译器。

【问题讨论】:

  • 是的,你可以。不会有什么不同。这是可能的,因为它的作者精心设计了这种方式。
  • 所以,如果我使用他们的源代码编译他们的 .dll,那么我想我不应该只是将发布模式 dll 与调试模式混合,反之亦然,但仍然可以混合并编译.
  • 这句话解析失败。我不明白你想说什么。
  • 如果我使用来自sqlite.org 的源代码编译他们的 .dll 并生成两个用于调试和发布模式的 DLL,那么为什么仍然可以互换使用它们,即在调试模式下使用发布 .dll仍然编译。我可以这样做吗?
  • 是的,如果有问题的 DLL 经过精心设计以避免与调用者共享 CRT 资源。 SQLite 是。

标签: c++ sqlite dll visual-c++-2012


【解决方案1】:

为了使 DLL 内部在调试模式下可见,它必须在调试模式下编译。否则,将没有可用的调试信息(例如监视变量、步入等)。另一方面,在调试模式下编译的 DLL 不应该用于发布,因为它速度较慢并且包含不必要的代码。我不确定调试功能的存在是否构成安全风险,但在生产环境中的 DLL 中添加额外的钩子听起来并不安全。

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-22
    • 2014-02-18
    • 2017-03-27
    • 1970-01-01
    • 2011-09-02
    • 2010-11-17
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多