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



我正在构建一个C++dll,它将被C&C++应用程序。我知道/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的应用程序使用了什么库?

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

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

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

最新更新