【问题标题】:One has to provide four different libraries with Visual Studio?一个人必须为 Visual Studio 提供四个不同的库?
【发布时间】:2011-01-11 16:49:36
【问题描述】:

This postthis post 表示,使用 Visual Studio,运行时库可以是静态/动态的,不应混用。甚至可以为库提供调试版本/发布版本。并且有四种可能性(静态/动态和调试/发布)。

那么,对于 Visual Studio,库提供者必须提供同一个库的四个不同版本?

添加

我尝试将 CppUnit 测试(调试)与发布构建库链接,但出现错误。所以,我想知道通常图书馆提供者可能需要提供所有可能的图书馆组合。

【问题讨论】:

    标签: visual-studio


    【解决方案1】:

    取决于.. 在正常情况下,您只提供发布版本。然后你可以选择静态/动态。在静态的情况下,你不必提供任何东西,因为它是静态的:你的库已经包含了它需要的 crt 中的所有函数。在动态的情况下,它还取决于:如果您希望您的客户使用您的 lib 构建应用程序,他们应该已经在他们的构建机器上拥有所需的 lib。否则,是的,您可以为他们提供动态发布版本的 crt 安装程序(或者只是提供相应的 dll,但这被认为是相当糟糕的做法)

    另外,如果我没记错的话,你不能重新分发 VS 调试库的调试版本,所以最后这意味着库提供者应该只提供一个版本。

    【讨论】:

    • 是否可以进行调试构建以链接到使用发布选项构建的库?我不确定,但我记得我尝试这个时遇到了错误。
    • 取决于.. 例如,您和我拥有的 kernel32.lib 绝对是发布版本,并且在将其用于调试构建时显然不会产生问题。但是对于 crt 库,这是不同的,即使它可以编译(在您之前的问题中没有:P),您可能会遇到麻烦,例如在调试库中分配有 new 的对象上调用 delete 时。
    • 我明白了。 CppUnit 测试依赖于 crt 库。我想,对于使用 crt 的库,无论如何都应该同时提供调试/发布。
    【解决方案2】:

    任何 C++ 库都是如此(我们在 Unix 端构建中具有相同的 4 个选项)。

    请注意,如果您打算将调试版本供其他开发人员使用,您只需提供调试版本,他们将需要它们进行调试 - 否则,对于最终用户,您只能提供优化的那些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      相关资源
      最近更新 更多