Fehler beim Kompilieren von Assimp unter Windows Qt-Creator MinGW



  • Mein Ziel war es die Assimp-Library(laden von 3D-Daten) für ein Projekt mit dem Qt-Creator unter Windows zu kompilieren. Ich habe mit Cmake ein Makefile für mingw erstellen lassen und habe Optionen wie Boost- und DirectX-Abhängigkeit deaktiviert. Soweit so gut, das Makefile wird brav erstellt und ich wechsle dann ins Build-Verzeichnis um mit mingw32-make die Sache bauen zu lassen.

    Nun habe ich folgende Fehlermeldungen und bin mit meinem Latein am Ende.

    C:\tmp\assimp--3.0.1270-source-only\code\Assimp.cpp:1:0: warning: -fPIC ignored
    for target (all code is position independent) [enabled by default]
    /*
    ^
    In file included from C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp
    /Logger.hpp:47:0,
    from C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp
    /DefaultLogger.hpp:46,
    from C:\tmp\assimp--3.0.1270-source-only\code\AssimpPCH.h:135,
    from C:\tmp\assimp--3.0.1270-source-only\code\Assimp.cpp:45:
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/types.h: In member fu
    nction 'void aiString::Set(const char*)':
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/types.h:284:22: error
    : '::strlen' has not been declared
    const size_t len = ::strlen(sz);
    ^
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/types.h: In member fu
    nction 'void aiString::Append(const char*)':
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/types.h:317:32: error
    : 'strlen' was not declared in this scope
    const size_t len = strlen(app);
    ^
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/types.h:318:8: error:
    in argument to unary !
    if (!len) {
    ^
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/types.h:326:10: error
    : in evaluation of 'operator+=(size_t {aka unsigned int}, const size_t {aka co
    nst unsigned int})'
    length += len;
    ^
    In file included from C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp
    /scene.h:49:0,
    from C:\tmp\assimp--3.0.1270-source-only\code\AssimpPCH.h:138,
    from C:\tmp\assimp--3.0.1270-source-only\code\Assimp.cpp:45:
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/texture.h: In member
    function 'bool aiTexture::CheckFormat(const char*) const':
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/texture.h:171:16: err
    or: '::strncmp' has not been declared
    return (0 == ::strncmp(achFormatHint,s,3));
    ^
    In file included from C:\tmp\assimp--3.0.1270-source-only\code\AssimpPCH.h:138:0
    ,
    from C:\tmp\assimp--3.0.1270-source-only\code\Assimp.cpp:45:
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/scene.h: In member fu
    nction 'aiNode* aiNode::FindNode(const char*)':
    C:\tmp\assimp--3.0.1270-source-only\code\../include/assimp/scene.h:155:8: error:
    '::strcmp' has not been declared
    if (!::strcmp( mName.data,name))return this;
    ^
    In file included from C:\tmp\assimp--3.0.1270-source-only\code\AssimpPCH.h:146:0
    ,
    from C:\tmp\assimp--3.0.1270-source-only\code\Assimp.cpp:45:
    C:\tmp\assimp--3.0.1270-source-only\code\StringComparison.h: In function 'int As
    simp::ASSIMP_stricmp(const char*, const char*)':
    C:\tmp\assimp--3.0.1270-source-only\code\StringComparison.h:137:9: error: '::str
    casecmp' has not been declared
    return ::strcasecmp(s1,s2);
    ^
    C:\tmp\assimp--3.0.1270-source-only\code\StringComparison.h: In function 'int As
    simp::ASSIMP_strincmp(const char*, const char*, unsigned int)':
    C:\tmp\assimp--3.0.1270-source-only\code\StringComparison.h:186:9: error: '::str
    ncasecmp' has not been declared
    return ::strncasecmp(s1,s2, n);
    ^
    In file included from C:\tmp\assimp--3.0.1270-source-only\code\GenericProperty.h
    :45:0,
    from C:\tmp\assimp--3.0.1270-source-only\code\Assimp.cpp:48:
    C:\tmp\assimp--3.0.1270-source-only\code\Hash.h: In function 'uint32_t SuperFast
    Hash(const char*, uint32_t, uint32_t)':
    C:\tmp\assimp--3.0.1270-source-only\code\Hash.h:72:27: error: '::strlen' has not
    been declared
    if (!len)len = (uint32_t)::strlen(data);
    ^
    code\CMakeFiles\assimp.dir\build.make:57: recipe for target 'code/CMakeFiles/ass
    imp.dir/Assimp.cpp.obj' failed
    mingw32-make.exe[2]: *** [code/CMakeFiles/assimp.dir/Assimp.cpp.obj] Error 1
    CMakeFiles\Makefile2:158: recipe for target 'code/CMakeFiles/assimp.dir/all' fai
    led
    mingw32-make.exe[1]: *** [code/CMakeFiles/assimp.dir/all] Error 2
    makefile:115: recipe for target 'all' failed
    mingw32-make.exe: *** [all] Error 2



  • In types.h fehlt ein #include <cstring> , der Fehler hat mich auch zwei ganze Tage genervt.


Anmelden zum Antworten