从visual studio 2015调试时找不到C ++文件

时间:2016-11-26 08:42:28

标签: c++ visual-studio-2015

我的问题是做什么时

Shader* s = new Shader("Shaders\\test.vert", "Shaders\\test.frag");

Texture texture("test.png");

visual studio拒绝找到它们,但在打开.exe文件时,一切正常。做

Shader* s = new Shader("C:\\Users\\Public\\Google Drive\\vs projects\\Engine\\Debug\\Shaders\\test.vert", "C:\\Users\\Public\\Google Drive\\vs projects\\Engine\\Debug\\Shaders\\test.frag");

确实解决了visual studio的问题,但它并不是我想要的。

我正在阅读文件的方式:

    static std::string read_file(const char* path)
    {
        FILE* file = fopen(path, "rt");
        fseek(file, 0, SEEK_END);
        unsigned long length = ftell(file);
        char* data = new char[length + 1];
        memset(data, 0, length + 1);
        fseek(file, 0, SEEK_SET);
        fread(data, 1, length, file);
        fclose(file);

        std::string result(data);
        delete[] data;

        return result;
    }

我确保我在调试(x86)模式下运行项目。任何解决方案?

1 个答案:

答案 0 :(得分:1)

这是因为从Visual Studio运行时,Visual Studio中C ++项目的工作目录将设置为项目目录,而不是包含可执行文件的目录。资料来源:Project Settings for a C++ Debug Configuration

  

工作目录

     
      
  • 指定正在调试的程序的工作目录,相对于EXE所在的项目目录。 如果将此处留空,则工作目录为项目目录。对于远程调试,项目目录将位于远程服务器上
  •   

因此,Shaders\test.vert的绝对路径是

${path_to_your_project}\Shaders\test.vert

在你的情况下,它是

C:\Users\Public\Google Drive\vs projects\Engine\Shaders\test.vert

C:\Users\Public\Google Drive\vs projects\Engine\{project_name}\Shaders\test.vert

如果Engine是解决方案文件夹

只需将文件移动到正确的目录(项目目录),您的代码即可运行。