发布运行时错误VS2008 - 特定于问题

时间:2011-04-14 20:05:46

标签: c++ visual-studio-2008 static-libraries

当我在调试模式下执行它时,我有一个完全正常的代码段,但是当我在Release模式下执行它时会出现运行时错误。它是一个基于控制台的应用程序,我添加了一个外部静态库。

问题不在于代码片段,因为它只在使用库时崩溃。请记住,它在调试模式下完美运行。 提前感谢您的时间。

4 个答案:

答案 0 :(得分:1)

仅仅因为它在调试模式下工作正常并不意味着没有问题。更改为释放模式会删除缓冲区填充,启用光引发等...所以它不是完全相同的代码段。

你是否试过坚持一些断点来看看它有多远,并试图诊断它崩溃的地方?

你打电话给哪个图书馆?你传递任何缓冲区吗?你有适当的初始化吗?

答案 1 :(得分:1)

可能是您正在使用的库具有调试版本以及发行版本的情况吗?你可能在两个版本中链接调试版本?

答案 2 :(得分:1)

鉴于您收到错误“defaultlib'MSVCRTD'与使用其他lib冲突;”如果您的问题可能是由链接到不同版本的运行时引起的,我不会感到惊讶。 确保所有exe / libs / dll文件都链接到运行时的相同版本(静态或动态)。

答案 3 :(得分:0)

您说由于缓冲区溢出而导致崩溃,因此请使用gflags等工具来诊断此缓冲区溢出的位置。

在许多情况下,代码在调试版本中工作得非常好,但在发布版本中崩溃。最常见的解释是:

  • 由于#ifdef _DEBUG部分
  • 中的代码,执行或班级规模可能会有所不同
  • 在Windows上,未初始化的变量在调试版本中初始化为零。在发布版本中,它们将是随机的