Assimp模型加载库安装/链接问题

时间:2017-08-28 22:31:18

标签: c++ opengl dll assimp cmake-gui

我试图在我的项目中安装Assimp,但我遇到了一些麻烦。我目前正在使用win 10 pro和visual studio 15 2017.

  1. 我已下载Assimp 4.0.1.zip,将其解压缩到目录中,加载cmakeGui并运行配置两次,然后生成到Assimp / build目录。

  2. 接下来我进入了Assimp / build,我运行了Assimp.sln并选择了ALL_BUILD,我认为它是。然后我复制了.lib和.dll旁边的/ code / debug中的所有文件,并将它们全部移动到我的exe所在的项目的Debug目录中。我将.lib复制到我的opengl / libs目录中,并将/ include中的所有头文件从最初提取的下载文件复制到我的opengl / includes / assimp目录中。

  3. 最后,我调整了我的项目链接器设置以包含assimp.lib和assimp.dll(为了简化此帖子的别名)

  4. 当我尝试构建项目时,它说它无法打开dll,在进行实验时,我将dll复制到项目目录中,与main.cpp和我的其他文件一起再次运行,这次说"无效或损坏的文件:无法读取0x378"

    可以肯定地说我需要研究编译,链接和cmake,但现在我重新开始。

    当我将标题包含在我的项目中时,我认为我已经开始工作了(也许我确实......)。为此,我从新的,构建的Assimp开始,与之前一样,将所有带有dll的文件移动到我的libs目录中,将所有包含从下载中转储到我的包中,同时将config.h从构建移动到此目录中。然后我在项目中设置了链接器设置,并没有将任何内容移动到我的项目目录中。

    之后,它停止了抱怨,所以我继续我正在关注的教程系列。我编译了,得到了一大堆错误,把它们修改为0然后我突然找到了8个新的错误。

    严重级代码描述项目文件行抑制状态 错误LNK2019未解析的外部符号_aiGetMaterialTextureCount在函数&#34中引用; public:unsigned int __thiscall aiMaterial :: GetTextureCount(enum aiTextureType)const" (?GetTextureCount @ aiMaterial @@ QBEIW4aiTextureType @@@ Z)opengl_model_loading F:\ Desktop \ MyDocuments \ Tuts \ opengl \ getting started \ opengl_model_loading \ opengl_model_loading \ main.obj 1

    这个错误让我感觉这可能是由于dll。 请指教。

1 个答案:

答案 0 :(得分:4)

我最近刚刚自己完成了这项工作。会说与v401&有很多麻烦得到错误或链接问题。成功让我的工作跟随;

注意:ASSIMP确实将boost作为依赖项。

  1. 从github下载/克隆master Asset-Importer-Lib: https://github.com/assimp/assimp
  2. 打开Cmake GUI&一旦打开:

    • 源代码在哪里:“.. \ MyDocuments \ assimp \ assimp-master”
    • 在哪里构建二进制文件:“.. \ MyDocuments \ assimp \ assimp-master \ build”。您需要制作一个构建文件夹&将Cmake指向它。

    2.1。或者,如果您熟悉命令行选项:使用

    生成具有相关路径的项目文件
    • cmake -G“Visual Studio 14 Win64”
  3. 点击配置。
  4. 然后生成。确保选择正确的构建选项,即VS15 2017 64bit。
  5. 使用Visual Studio加载“.. \ MyDocuments \ assimp \ assimp-master \ build \ Assimp.sln”。
  6. 右键点击“ALL_BUILD”&选择“构建”。这将需要几分钟。一旦完成&没有错误,它应该创建必要的* .dll / * .lib .. \我的文档\ assimp \ assimp主\构建\代码\调试
  7. 链接&在您的现有项目中包含相关的* .lib&也 “.. \ MyDocuments \ assimp \ assimp-master \ include \ assimp”文件夹。您还需要确保* .dll文件与正在运行的* exe文件位于同一文件夹中或包含在内。
  8. 您可能还需要复制.. \ MyDocuments \ assimp \ assimp-master \ build \ include \ assimp \ config.h“并在步骤7中包含它。
  9. 确保为代码构建正确的库,即32 / 64bit / debug / release / unicode / etc,否则可能会遇到问题。

    以下视频对视觉倾向有用。 https://youtu.be/W_Ey_YPUjMk

    希望这有帮助。

    编辑: 如果你想要静态库版本,即不需要.dll: 从上面的步骤:

    5.1。更改相关项目配置类型&从.dll扩展到.lib类型(应该是两个:assimp& zlib)。

    5.2。右键单击“UpdateAssimpLibsDebugSymbolsAndDLLs” - > Properties-> Build Events&将命令行部分中的路径从.. \ Path * .dll更新为.. \ Path * .lib。 (如果遇到错误,请在assimp_cmd项目中执行相同的操作)。

    1. 同上,但现在还需要将您的项目链接到IrrXML.lib& zlibd.lib。不再需要* .dll文件。