使用/ MT或/ MD在Visual Studio 10中构建dll

时间:2012-08-02 01:10:06

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

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

我的怀疑:

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

  3. 是的,您将仅限于VS 2012-Windows Vista及更高版本的supported target platforms