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.