代码之家  ›  专栏  ›  技术社区  ›  halivingston

如果我用VS2010开发一个C++(原生)DLL,我是否需要部署MSVCRT100.DLL?

  •  2
  • halivingston  · 技术社区  · 16 年前

    我没有使用MSVCRT100.dll的任何功能(我甚至不知道是否有新功能)。

    4 回复  |  直到 16 年前
        1
  •  -3
  •   mjsabby    16 年前

    也许 改变,虽然这是非常不可能的,因为VStudio已经在它的最后阶段了一段时间了。

    http://www.dependencywalker.com )

    或者,也可以试试:-)

        2
  •  2
  •   BarsMonster    16 年前

    好吧,你应该能够静态链接它。您的.dll将更大,但不需要msvcrt。这由代码生成控制->运行库(选择/MT)。

        3
  •  2
  •   Alexander Gessler    16 年前

    大多数应用程序使用C/C++运行时。您可能正在以您还不知道的方式使用运行时。。。呼叫 fopen() 在什么地方?然后你用它。

    但是,正如BarsMonster所指出的,您可以静态链接到运行时。二进制大小会增加,但没有外部依赖项。事实上,如果您不想使用安装程序软件来部署应用程序,您会选择这种方法。

    然而,请记住,静态链接有一个严重的缺点:堆内存不能跨DLL边界共享。内存块 被第一个分配给它的模块(DLL)释放。如果不能满足此要求,请勿使用静态连杆。因此,无法避免使用运行时进行部署。

        4
  •  0
  •   Idan K    16 年前

    您可以使用VS2010,但仍以较旧版本的运行时为目标。这可以在项目属性中配置,下面是一个图像:

    pic from VC++ blog http://blogs.msdn.com/photos/vcblog/images/9934271/original.aspx

    显然,您仍然需要安装目标工具集。
    有关更多信息,请查看 this