2016-11-26 88 views
0

我的問題是,這樣做C++文件沒有發現從Visual Studio調試時,2015年

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

Texture texture("test.png"); 

視覺工作室拒絕找到他們,但是當打開.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"); 

確實解決了視覺工作室的問題,但它不是我真正想要的。

我讀文件的方式:

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; 
    } 

我已經確定我運行在調試(86)模式的項目。任何解決方案

+0

什麼是着色器? – Danh

+0

@Danh你是指着色器的內容嗎? –

回答

1

這是因爲Visual Studio中的C++項目的工作目錄將從Visual Studio運行時設置爲項目目錄,而不是包含可執行文件的目錄。來源: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是一個解決方案文件夾

只需將您的文件移動到正確的目錄(項目目錄),您的代碼就可以工作。

+0

我認爲它就像Visual Studio中的C#,其中debug/release文件夾包含.vhost.exe文件,我的錯誤。謝謝,完美無缺! :) –