You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从源码编译Assimp未生成libassimp可链接库文件问题咨询

问题描述
  • 最初使用普通控制台运行CMake编译Assimp库时报错,提示无法找到cl编译器,后续切换到x64_x86开发者命令提示符执行编译操作。
  • 执行以下命令后编译流程无报错:
cmake CMakeLists.txt -DASSIMP_BUILD_ASSIMP_TOOLS=OFF
cmake --build .
  • 编译完成后仅生成3个目标文件:
C static library zlibstaticd.lib
CXX shared library ..\bin\assimp-vc142-mtd.dll
CXX executable ..\bin\unit.exe
  • 编译结果中不存在MinGW环境可链接的libassimp.a或libassimp.so文件。尝试在自有MinGW项目中直接链接生成的dll,添加如下链接参数:
-L\"{assimp root directory}/bin\"
-lassimp-vc142-mtd
  • 链接阶段失败,报错信息:undefined reference to 'Assimp::Importer::Importer()',需要获取可在MinGW环境下正常链接的Assimp库文件。
解决方案

链接报错的核心原因是ABI不兼容:你用MSVC开发者命令提示符编译出来的是MSVC格式的二进制库,和MinGW/GCC的符号修饰规则、运行时接口不匹配,哪怕文件名匹配,MinGW也无法正确识别MSVC编译生成的dll里的导出符号,自然会报未定义引用的错误。

按以下步骤编译可正常使用的MinGW版本Assimp库即可:

  1. 不要使用MSVC开发者命令提示符,打开你平时编译自有项目用的MinGW环境终端,确认终端里可以直接调用gcc/g++/mingw32-make/cmake命令。
  2. 在Assimp源码根目录新建独立的build-mingw文件夹,避免和之前MSVC编译的产物混在一起,进入该文件夹后执行CMake配置命令:
cmake .. -G "MinGW Makefiles" -DASSIMP_BUILD_ASSIMP_TOOLS=OFF -DASSIMP_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release
  1. 配置无报错后,执行多线程编译命令:
mingw32-make -j%NUMBER_OF_PROCESSORS%
  1. 编译完成后,会在输出目录的lib文件夹下生成MinGW可识别的libassimp.a(静态库)或libassimp.dll.a(动态库导入库),bin文件夹下生成配套的libassimp-*.dll动态库文件。
  2. 自有项目链接时,把库搜索路径指向编译生成的lib文件夹,链接参数写-lassimp即可,不要尝试直接链接之前MSVC编译生成的assimp-vc142-mtd.dll。如果用动态库版本,运行时把对应dll放到可执行文件同目录即可。

内容的提问来源于stack exchange,提问作者Boris Vassilev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:24:15