最近、小さな OpenGL ゲームを開発しています。その中のすべてがデバッグ ビルドで正常に動作しますが、リリースをビルドすると、奇妙なアクセス違反例外が発生します。
コード全体を検索したところ、ファイルを開こうとすると問題が発生するようです。問題が発生していると思われる関数は次のとおりです。
#define LOCAL_FILE_DIR "data\\"
#define GLOBAL_FILE_DIR "..\\data\\"
std::string FindFile(const std::string &baseName)
{
std::string fileName = LOCAL_FILE_DIR + baseName;
std::ifstream testFile(fileName.c_str()); // The code breaks here
if(testFile.is_open())
return fileName;
fileName = GLOBAL_FILE_DIR + baseName;
testFile.open(fileName.c_str());
if(testFile.is_open())
return fileName;
throw std::runtime_error("Could not find the file " + baseName);
}
このコードは、GLSL シェーダーの読み込みに関連付けられています。関数はシェーダーのファイル名を取得し、必要なファイルを見つけるためにそれを FindFile に渡します。