我想实现一个程序,可以使用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;
}
程序可以再次运行!
我现在真的很困惑。任何人都可以帮助我吗?
答案 0 :(得分:2)
将动态库添加到Qt的调试/发布(根据调试中的编译输出)目录。 没有引用代码的程序:
ReadFile("box.obj", NULL);
GetErrorString();
将起作用,因为它不会在动态库中调用函数,这就是它被称为动态库的原因。
还写:
LIBS += -L/path not -l