Assimp模型加载库安装/链接故障

ete*_*oob 8 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(简化此帖子的别名)

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


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

在我将标题包含在我的项目中之后,我得到它以停止抱怨,我以为我有它工作(也许我做...).为此,我从新的,构建的Assimp开始,像以前一样,将所有带有dll的文件移动到我的libs目录中,将所有包含从下载中转储到我的包中,同时将config.h从构建移动到此目录中.然后我在项目中设置链接器设置,并没有将任何内容移动到我的项目目录中.

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

严重级代码描述项目文件行抑制状态错误LNK2019未解析的外部符号_aiGetMaterialTextureCount在函数"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.请指教.

Ret*_*oid 5

我最近刚刚完成了此操作,并且会说v401遇到了很多麻烦,出现了错误或链接问题。成功让我的与以下人员一起工作;

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

  1. 从github下载/克隆主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”并选择“构建”。这将需要几分钟。一旦完成且没有错误,它应该在.. \ MyDocuments \ assimp \ assimp-master \ build \ code \ Debug中创建必要的* .dll / *。lib
  7. 链接相关的* .lib并将其包含到您的现有项目中,还将“ .. \ MyDocuments \ assimp \ assimp-master \ include \ assimp”文件夹包含其中。您还需要确保* .dll文件与您正在运行的* exe位于同一文件夹中,或包含在其中。
  8. 您可能还需要从.. \ MyDocuments \ assimp \ assimp-master \ build \ include \ assimp \ config.h“复制并包含在step7中。

只需确保为代码构建正确的库即可,例如32 / 64bit / debug / release / unicode / etc,否则可能仍然遇到问题。

跟随视频对于视觉倾斜者很有用。 https://youtu.be/W_Ey_YPUjMk

希望这可以帮助。

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

5.1。将相关项目配置类型和扩展名从.dll更改为.lib类型(应为两种:assimp和zlib)。

5.2。右键单击“ UpdateAssimpLibsDebugSymbolsAndDLLs”->“属性”->“构建事件”,然后将命令行部分中的路径从.. \ Path * .dll更新到.. \ Path * .lib。(如果遇到错误,请对assimp_cmd项目执行相同的操作)。

  1. 与上面相同,但是现在还需要将您的项目链接到IrrXML.lib和zlibd.lib。应该不再需要* .dll文件。

  • 感谢您的逐步指导!对于静态库,我还必须在CMake中启用`ASSIMP_BUILD_ZLIB`并禁用`BUILD_SHARED_LIBS`。IrrXML.lib和zlibstaticd.lib(而不是zlibd.lib)文件分别位于“ ... \ build \ contrib \ irrXML \ Debug”和“ ... \ build \ contrib \ zlib \ Debug”中。 (2认同)