当我在调试模式下执行它时,我有一个完全正常的代码段,但是当我在Release模式下执行它时会出现运行时错误。它是一个基于控制台的应用程序,我添加了一个外部静态库。
问题不在于代码片段,因为它只在使用库时崩溃。请记住,它在调试模式下完美运行。 提前感谢您的时间。
答案 0 :(得分:1)
仅仅因为它在调试模式下工作正常并不意味着没有问题。更改为释放模式会删除缓冲区填充,启用光引发等...所以它不是完全相同的代码段。
你是否试过坚持一些断点来看看它有多远,并试图诊断它崩溃的地方?
你打电话给哪个图书馆?你传递任何缓冲区吗?你有适当的初始化吗?
答案 1 :(得分:1)
可能是您正在使用的库具有调试版本以及发行版本的情况吗?你可能在两个版本中链接调试版本?
答案 2 :(得分:1)
鉴于您收到错误“defaultlib'MSVCRTD'与使用其他lib冲突;”如果您的问题可能是由链接到不同版本的运行时引起的,我不会感到惊讶。 确保所有exe / libs / dll文件都链接到运行时的相同版本(静态或动态)。
答案 3 :(得分:0)
您说由于缓冲区溢出而导致崩溃,因此请使用gflags等工具来诊断此缓冲区溢出的位置。
在许多情况下,代码在调试版本中工作得非常好,但在发布版本中崩溃。最常见的解释是:
#ifdef _DEBUG
部分