好的,为了说明从 IDE 运行的怪癖,我做了一个小测试。希望这可以帮助您弄清楚相对路径在 VS 中是如何工作的。
所以我的文件夹层次结构如下所示:
/_Sandbox
_Sandbox.sln
/Debug
_Sandbox.exe
/shaders
color.vert
/_Sandbox
_Sandbox.proj
main.cpp
代码如下所示:
#include <iostream>
#include <string>
#include <sys/stat.h>
int main(int argc, char* argv[])
{
struct stat info;
std::string path = "shaders/color.vert"; // To not I get the same behavior with "shaders\\color.vert"
int ret = stat(path.c_str(), &info);
ret == 0 ? std::cout << "File found." << std::endl : std::cout << "File doesn't exist." << std::endl;
std::cin.get();
return 0;
}
因此,如果我在 IDE 中运行它,我会得到“文件不存在。”,如果我在 IDE 之外运行它,我会得到“文件找到”。为了让程序从 VS 中找到着色器文件,我必须像这样放置着色器文件夹:
/_Sandbox
_Sandbox.sln
/Debug
_Sandbox.exe
/_Sandbox
/shaders
color.vert
_Sandbox.proj
main.cpp
但是,您可以获取代码以从 IDE 内部和外部查找文件夹。您要做的是转到项目的设置。在“调试”中并将“工作目录”更改为$(SolutionDir)$(Configuration)\
希望这可以为您解决问题。