1

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

我的疑惑:

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

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

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

4

1 回答 1

2
  1. 是的,必须存在相关的运行时库 DLL

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

  3. 是的,您将受限于 VS 2012支持的目标平台——Windows Vista 及更高版本。

于 2012-08-02T02:09:33.830 回答