我的QT应用程序中有以下代码:
FILE * file = fopen(m_fileName.c_str(), "rb");
,其中m_fileName的类型为std::string。此代码在VisualStudio2012中运行良好。但是在QT4.7.4 (MinGW编译器)中,我的程序在这一行崩溃。
我真的不知道这个代码有什么问题。我没有经常使用MinGW,所以肯定有一些我不知道的东西。
更新:
main.cpp代码
std::string fileName = "test1.bmp";
m_pTexture1 = new Texture(GL_TEXTURE_2D, fileName);
if (!m_pTexture1->Load()) {
return;
}Texture.cpp简化代码
Texture::Texture(GLenum TextureTarget, std::string FileName)
{
m_textureTarget = TextureTarget;
m_fileName = FileName;
}
bool Texture::Load()
{
try {
FILE * file = fopen(m_fileName.c_str(),"rb");
}
catch (...) {
std::cout « "Error loading texture '" « m_fileName;
return false;
}
}Texture.h码
class Texture
{
public:
Texture(GLenum TextureTarget, std::string FileName);
bool Load();
private:
std::string m_fileName;
GLenum m_textureTarget;
GLuint m_textureObj;
unsigned int width, height;
unsigned char * data;
};“是的,”保尔·麦肯齐说得对。我试图在构造函数中打印m_fileName,结果它压垮了程序。看来m_fileName无法初始化。但是,我不知道为什么会这样。
更新2
我发现它是因为printf和其他C/O函数而崩溃的。很奇怪。
发布于 2015-05-04 01:25:11
您的代码是语法错误。(括号)
FILE * file = fopen(m_fileName.c_str()), "rb"); ^ this one
编译成功了吗?
https://stackoverflow.com/questions/30021303
复制相似问题