【问题标题】:Using /MT or /MD to build dll in Visual Studio 10在 Visual Studio 10 中使用 /MT 或 /MD 构建 dll
【发布时间】:2012-08-02 01:10:05
【问题描述】:

我正在构建一个将由 C 和 C++ 应用程序使用的 C++ dll。我知道 /MT 会导致静态库 (LIBCPMT.LIB) 代码被转储到我的 dll 中,因此没有依赖性。 /MD 将链接到导入库,并将依赖于 C++ 运行时 (MSVCP100.dll)。

我的疑惑:

  1. 在 /MD 选项中,我是否必须确保 Windows 操作系统上存在正确版本的 C++ 运行时 dll(我在开发期间链接到的导入库)?

  2. 我是否需要关心使用我的 dll 的应用程序链接到哪个 C/C++ 运行时?我想使用 C++11 功能,但想确保旧的 C++ 应用程序仍然可以使用我的 dll。

  3. 我现在计划使用 VS 2012 RC,我认为他们的 C++ 运行时库已经更新。是否会再次依赖于代码将在哪个版本的 Windows 上执行或使用我的 dll 的应用程序使用的库?

【问题讨论】:

    标签: c++ visual-studio-2010 visual-studio visual-c++ msvcrt


    【解决方案1】:
    1. 是的,必须存在相关的运行时库 DLL

    2. 是的,客户端代码通常需要使用相同的运行时。但是,您可以通过仅向客户端提供 C 样式接口或 COM 接口来解决此问题。例如,没有 std::string 或其他包含运行时分配的内容的数据。

    3. 是的,对于 VS 2012(Windows Vista 及更高版本),您将只能使用 supported target platforms

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多