我有这段代码在使用 g++ 的 Linux 上工作:
GLuint Shader::initShader_(GLenum shaderType, const std::string& shaderFilename)
{
std::ifstream inputFile(shaderFilename.c_str());
if (inputFile.is_open() == false)
{
std::ostringstream oss;
oss << "Shader " << shaderFilename << " doesn't exist!";
print(LOG_LEVEL::ERROR, oss.str());
}
...
}
其中三个点代表一些代码。在 g++ 和 Visual Studio (2012) 上,代码都可以编译。但是在 Visual Studio 中,第一行会引发访问冲突异常。这实际上发生在打开文件时,调试器将我重定向到do_always_noconv但我不明白这个问题。
包含文件名的字符串是有效的,并且程序试图打开的文件在 good 目录中,调试器在这个目录中工作。我猜问题不是来自文件本身,因为如果流无法打开它,那么我仍然可以输入下一行而不会出现访问冲突。
有没有人已经遇到过这个问题或有想法?再次使用 g++ 在 Linux 上运行没有任何问题。
谢谢你的帮助。