如何让 AssImp 正常工作?

Posted

技术标签:

【中文标题】如何让 AssImp 正常工作?【英文标题】:How to get AssImp to work properly? 【发布时间】:2015-05-08 00:34:08 【问题描述】:

我一直在尝试这样做大约一个星期,但无论如何都没有好处。我正在构建一个依赖 Assimp 加载模型的 .dll(UNDONE Engine .dll)。 .dll 编译和链接完全没有问题,但是当我尝试将它与某些应用程序一起使用时,我收到以下错误:

'Test_Game.exe' 是我制作的应用程序,它使用了正在使用 assimp 的 .dll 库。

我从 sourceforge 存储库下载了 assimp。我得到了适用于 windows 的 3.0 SDK 版本,安装了它,我做了一切必要的事情来链接项目。

下面是带有 .exe 的目录的样子:

我已经包含了正确的库位,即 32 位版本。

为什么它不起作用? Assimp 内部是否有一些内部错误阻止我使用它?还是我缺少什么?是否因为我从 dll 中使用它而导致问题?您能帮我完成正确安装和使用的步骤吗?我使用 Visual Studio 13。

编辑

在我的 exe 上运行 Dependency walker 后,我得到了这个:

我不太清楚这意味着什么,但是,只是猜测,这是否意味着 assimp.exe 有一些未定义的函数?

【问题讨论】:

为什么你的引擎 dll 依赖于 assimp.exe?不应该只是 assimp32.dll 吗? @dirk 我不知道为什么。我没有自己构建 assimp 库。 但您包含库。这大概就是问题所在。因此,请检查您在 IDE 中添加依赖项的位置。 我简单地将库包含和库目录添加到项目属性中的包含和库目录中。我使用 assimp 库函数。为什么它然后要求 assimp.exe,我不能从那里知道.. 【参考方案1】:

depends.exe 告诉你的是 undone_engine.dll 的导入表中包含 AssImp.exe 的条目,其中包含函数 ??0Importer@AssImp@@QAE@XZ 和一些朋友的条目。然后 Windows 期望在 AssImp.exe 的 export 表中找到函数 ??0Importer@AssImp@@QAE@XZ 和朋友。

Depends 还告诉你 AssImp.exe 的导出表中没有任何内容,这并不奇怪,因为 exe 很少导出任何内容。有趣的是,它还告诉您 assimp.exe 导入 assimp32.dll。

您可能打算与 assimp32.lib 链接,而不是 assimp.lib。 (@Dirk 在 cmets 中暗示了这一点;我怀疑他成功了。)您是否有一个 assimp32.lib 可以尝试链接而不是 assimp.lib?

我想知道 AssImp32.dll 是否从静态库 ButtGremlin.lib 中导入代码? /十二岁

【讨论】:

以上是关于如何让 AssImp 正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

assimp,如何保存压缩的 assbin 文件

你如何使用 Assimp 加载 Blender 文件?

如何使用 assimp 在 C++ 中旋转蒙皮模型的骨骼?

如何访问碰撞模型数据?

Assimp 和 D3D 模型加载:网格未在 D3D 中显示

如何让 AbstractRoutingDataSource 正常工作?