在函数中声明的 ifStream 对象在发布模式下不起作用

ifstream object declared inside a function not working on release mode

本文关键字:模式 不起作用 布模式 函数 声明 ifStream 对象      更新时间:2023-10-16

我正在开发我的第一个应用程序,我实际上打算给其他人使用它,所以我正在尝试执行漏洞部署过程(在Qt上(,并在之后创建一个安装程序。

问题是我的代码中有一个特定的点(我已经发现了在哪里(,它在调试模式下运行良好,但在发布时我没有想法会发生什么(它没有运行特定功能(。

问题是(只是一个关于的简单示例(,如果在主函数中声明一个 ifstream 对象,则发布.exe运行良好。当我将该对象放在函数上时,它不起作用!我不知道该怎么办。

#include <iostream>
#include <reader.h>
#include <string>
#include <map>
#include <mrp.h>
#include <file_manager.h>
#include <string>
#include <facade_mrp.h>
#include <fstream>
#include <vector>
using namespace std;
void test()
{
fstream f;                
f.open("C:\Users\user\Documents\Alexandre\C++\MRP\build-MRP-Desktop_Qt_5_0_2_MinGW_32bit-Release\Demandas.txt",ifstream::in);
f.close();              
}
int main(int argc, char* argv[])
{
test();                 
return 0;
}

请澄清你的意思:">不起作用"。程序崩溃了吗?还是只是它不读取文件的内容?

要解决std::ifstream的问题,通常可以方便地查看.good().fail().eof()成员函数。在文档中了解有关它们的更多信息。

如果问题出现在发布配置中,但不出现在调试中,则通常有几个常见的罪魁祸首应该调查:

  • 发布版本通常启用了-O2-O3优化级别,而调试版本则未启用。
  • 发布版本通常存储在与调试版本不同的文件系统路径中(检查相对路径(。

希望这有帮助!