程序在使用Assimp编译和执行Qt5项目时崩溃

时间:2014-11-06 13:39:51

标签: c++ qt qt-creator assimp

我想实现一个程序,可以使用Assimp(link of Assimp)将3D模型加载到OpenGL中。

我的Qt版本是5.3.2。 我使用Qt Creator并修改.pro文件以导入Assimp库:

INCLUDEPATH += H:\Study\assimp-3.1.1-win-binaries\assimp-3.1.1-win-binaries\include\assimp
LIBS += -lH:\Study\assimp-3.1.1-win-binaries\assimp-3.1.1-win-binaries\lib32\assimp

然后我尝试在我的程序中阅读box.obj

#include <scene.h>
#include <postprocess.h>
#include <Importer.hpp>

int main(){
    Assimp::Importer importer;

    const aiScene* scene = importer.ReadFile("box.obj", NULL);

    if (!scene)
    {
        qDebug() << "Error loading file: (assimp:) " << importer.GetErrorString();
        return false;
    }

    .....// Other code to create a window

    return 0;
}

然后编译完成没有错误。 然后程序在启动后就崩溃了。

  

启动G:\ QtProject \ QtTest \ build-MyOpenGL-Desktop_Qt_5_3_MSVC2010_OpenGL_32bit-Debug \ debug \ MyOpenGL.exe ...

     

G:\ QtProject \ QtTest \ build-MyOpenGL-Desktop_Qt_5_3_MSVC2010_OpenGL_32bit-Debug \ debug \ MyOpenGL.exe崩溃

我尝试调试,但断点似乎不起作用。

我删除了一些代码,只是声明了scene

#include <scene.h>
#include <postprocess.h>
#include <Importer.hpp>

int main(){
    //Assimp::Importer importer;

    const aiScene* scene;  // = importer.ReadFile("box.obj", NULL);

    /*if (!scene)
    {
        qDebug() << "Error loading file: (assimp:) " << importer.GetErrorString();
        return false;
    }*/

    .....// Other code to create a window

    return 0;
}

程序可以再次运行!

我现在真的很困惑。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

将动态库添加到Qt的调试/发布(根据调试中的编译输出)目录。 没有引用代码的程序:

ReadFile("box.obj", NULL);
GetErrorString();

将起作用,因为它不会在动态库中调用函数,这就是它被称为动态库的原因。 还写:

LIBS += -L/path not -l