代码之家  ›  专栏  ›  技术社区  ›  Jan Deinhard

为什么我需要为每个VisualC++版本构建特殊库(二进制文件)?

  •  2
  • Jan Deinhard  · 技术社区  · 15 年前

    有很多C++库(大多数?)这是为每个Visual C++版本(2003, 2005, 2008,2010)构建的特殊二进制文件。

    将VisualC++ 2008内置的C++库与Visual C++ 2010连接起来有什么问题?

    2 回复  |  直到 15 年前
        1
  •  2
  •   rubenvb    15 年前

    This msdn page (在“存在什么问题……”下面)很好地解释了问题所在。这里描述的是什么msvcrt.dll<->msvcrt10.dll对每个msvcrtXX.dll有。

        2
  •  2
  •   CB Bailey    15 年前

    根据库的设计方式,这通常会导致问题,因为存在多个版本的(例如)分配和解除分配函数,并且当一个运行时库中分配的指针从另一个库传递到解除分配函数时,很容易出现堆错误。无论运行时库是动态链接还是静态链接,都可能发生这种情况。

    依赖静态保存信息的运行时库特性还有其他潜在问题,例如 srand rand ,区域设置和遗留函数,例如 strtok