【问题标题】:cannot build assimp with minGw64无法使用 minGw64 构建 assimp
【发布时间】:2019-12-23 17:41:59
【问题描述】:

我使用了 cmake,并且能够构建一个 C::B 项目。 但是编译 Assimp.cbp 文件引发了一堆错误。 是否有人尝试在 w10 下使用 mingw64 编译 assimp 以便 C::B 向我发送线索? 提前Thks。 以下是日志错误:

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x8e): undefined reference to `Assimp::Importer::ValidateFlags(unsigned int) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0xc6): undefined reference to `Assimp::Importer::ReadFile(char const*, unsigned int)'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x14e): undefined reference to `Assimp::DefaultLogger::create(char const*, Assimp::Logger::LogSeverity, unsigned int, Assimp::IOSystem*)'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x191): undefined reference to `Assimp::DefaultLogger::kill()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x1d0): undefined reference to `Assimp::Importer::GetErrorString() const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x2b9): undefined reference to `Assimp::Exporter::Export(aiScene const*, char const*, char const*, unsigned int, Assimp::ExportProperties const*)'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x35c): undefined reference to `Assimp::Exporter::GetErrorString() const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x426): undefined reference to `Assimp::DefaultLogger::create(char const*, Assimp::Logger::LogSeverity, unsigned int, Assimp::IOSystem*)'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x435): undefined reference to `Assimp::DefaultLogger::kill()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0xded): undefined reference to `Assimp::Importer::ReadFile(char const*, unsigned int)'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x3b): undefined reference to `Assimp::DefaultLogger::create(char const*, Assimp::Logger::LogSeverity, unsigned int, Assimp::IOSystem*)'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x41): undefined reference to `Assimp::DefaultLogger::kill()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0xb9): undefined reference to `Assimp::Importer::Importer()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0xce): undefined reference to `Assimp::Importer::SetPropertyInteger(char const*, int)'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0xe2): undefined reference to `Assimp::Exporter::Exporter()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x17b): undefined reference to `Assimp::Importer::IsExtensionSupported(char const*) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x1b5): undefined reference to `Assimp::Exporter::~Exporter()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x1bd): undefined reference to `Assimp::Importer::~Importer()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x202): undefined reference to `aiGetCompileFlags'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x225): undefined reference to `aiGetVersionRevision'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x25e): undefined reference to `aiGetVersionMinor'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x265): undefined reference to `aiGetVersionMajor'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x2ed): undefined reference to `Assimp::Exporter::GetExportFormatCount() const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x2ff): undefined reference to `Assimp::Exporter::GetExportFormatDescription(unsigned long long) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x379): undefined reference to `Assimp::Exporter::GetExportFormatCount() const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x39b): undefined reference to `Assimp::Exporter::GetExportFormatDescription(unsigned long long) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x40c): undefined reference to `Assimp::Importer::GetExtensionList(aiString&) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x48b): undefined reference to `Assimp::Importer::ReadFile(char const*, unsigned int)'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x54d): undefined reference to `Assimp::Exporter::~Exporter()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text.startup+0x555): undefined reference to `Assimp::Importer::~Importer()'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(WriteDumb.cpp.obj):WriteDumb.cpp:(.text+0x2ed3): undefined reference to `aiGetVersionRevision'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(WriteDumb.cpp.obj):WriteDumb.cpp:(.text+0x2ef6): undefined reference to `aiGetCompileFlags'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(WriteDumb.cpp.obj):WriteDumb.cpp:(.text+0x37a2): undefined reference to `aiGetVersionRevision'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(WriteDumb.cpp.obj):WriteDumb.cpp:(.text+0x37a9): undefined reference to `aiGetVersionMinor'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(WriteDumb.cpp.obj):WriteDumb.cpp:(.text+0x37b0): undefined reference to `aiGetVersionMajor'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Info.cpp.obj):Info.cpp:(.text+0x22d2): undefined reference to `Assimp::Importer::GetMemoryRequirements(aiMemoryInfo&) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Info.cpp.obj):Info.cpp:(.text+0x2775): undefined reference to `aiGetMaterialString'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Info.cpp.obj):Info.cpp:(.text+0x288d): undefined reference to `aiGetMaterialString'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0x1a): undefined reference to `Assimp::Exporter::GetExportFormatCount() const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0x48): undefined reference to `Assimp::Exporter::GetExportFormatDescription(unsigned long long) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0x80): undefined reference to `Assimp::Exporter::GetExportFormatDescription(unsigned long long) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0x7ac): undefined reference to `Assimp::Exporter::GetExportFormatCount() const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0x7e4): undefined reference to `Assimp::Exporter::GetExportFormatDescription(unsigned long long) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0x80f): undefined reference to `Assimp::Exporter::GetExportFormatDescription(unsigned long long) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0xabb): undefined reference to `Assimp::Exporter::GetExportFormatCount() const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0xaf4): undefined reference to `Assimp::Exporter::GetExportFormatDescription(unsigned long long) const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0x106c): undefined reference to `Assimp::Exporter::GetExportFormatCount() const'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0x10a4): undefined reference to `Assimp::Exporter::GetExportFormatDescription(unsigned long long) const'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[2]: *** [tools\assimp_cmd\CMakeFiles\assimp_cmd.dir\build.make:177: tools/assimp_cmd/assimp.exe] Error 1
Le processus s'est terminé avec le code d'état 2 (8 minute(s), 52 seconde(s))
50 erreur(s), 113 avertissement(s) (8 minute(s), 52 seconde(s))

【问题讨论】:

    标签: codeblocks mingw-w64 assimp cmake-gui


    【解决方案1】:

    这是我在 MSYS2 下使用 MinGW-w64 构建它的方法:

    tar xfz v5.0.0.tar.gz
    cd assimp-5.0.0
    # fix missing strcasecmp/strncasecmp in code/StringComparison.h (version >= 4.0.0)
    mv code/StringComparison.h code/StringComparison.h.bak &&
    sed -e "s/strcasecmp/stricmp/g; s/strncasecmp/strnicmp/g" code/StringComparison.h.bak > code/StringComparison.h
    mkdir -p build_static build_shared &&
     cd build_static &&
     cmake.exe -G"MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DASSIMP_BUILD_TESTS:BOOL=OFF -DASSIMP_BUILD_ASSIMP_TOOLS:BOOL=OFF -DASSIMP_HEADERCHECK:BOOL=OFF -DASSIMP_OPT_BUILD_PACKAGES:BOOL=OFF -DSYSTEM_IRRXML:BOOL=OFF -DASSIMP_BUILD_SAMPLES:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DASSIMP_BUILD_TESTS:BOOL=OFF .. &&
     cd .. &&
     cd build_shared &&
     cmake.exe -G"MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=ON -DASSIMP_BUILD_TESTS:BOOL=OFF -DASSIMP_BUILD_ASSIMP_TOOLS:BOOL=OFF -DASSIMP_HEADERCHECK:BOOL=OFF -DASSIMP_OPT_BUILD_PACKAGES:BOOL=OFF -DSYSTEM_IRRXML:BOOL=OFF -DASSIMP_BUILD_SAMPLES:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DASSIMP_BUILD_TESTS:BOOL=OFF .. &&
     cd .. &&
     # fix missing ../../revision.h
     cp -f build_shared/revision.h . &&
     make -Cbuild_static install/strip &&
     make -Cbuild_shared install/strip &&
     echo Success
    

    /usr/local 替换为您需要的目标文件夹。

    虽然我没有成功使用-DASSIMP_BUILD_ASSIMP_TOOLS:BOOL=ON 构建它。

    【讨论】:

      【解决方案2】:

      我不知道assimp库,但是如果你使用msys2,你可以使用命令安装完整的包(动态和静态库以及所有头文件): pacman -S mingw-w64-x86_64-assimp.

      【讨论】:

      • 感谢您的回答。错误:无法找到目标:mingw-64-x86_64-assimp。
      • 我认为应该是mingw-w64-x86_64-assimp,但我没有测试过。
      • 我在 msys2 提示符下运行了你的命令。这工作没有错误。这意味着该库已正确构建?它现在在哪里? MSys2 是 cmake 的替代品,这让我感到困惑。
      • 如果您想知道作为特定软件包的一部分安装的内容,请使用以下命令:pacman -Ql mingw-w64_x86_64-assimp。该命令列出了包的内容以及它的位置(在C:/msys64/mingw64 目录内)
      • 我认为 pacman(包管理器)会安装包的预编译内容,而这些内容并未在您的机器上编译。
      【解决方案3】:

      据我所知,这些工具目前不适用于此编译器。我需要检查一下。

      【讨论】:

      • 哪些工具?哪个编译器?为什么是你?
      • 库提供的工具——比如查看器。我写了大部分,所以我:-)。
      • 所以你(很大程度上)写了assimp?在这种情况下,请接受我谦卑的敬意。
      • 不是所有的东西,我是项目负责人。不用担心。工具的 mingw 构建已损坏,因此请禁用它。
      猜你喜欢
      • 1970-01-01
      • 2021-04-15
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多