난 그냥이 동일한 문제가 발생하고,이 질문은 솔루션에 대한 Google 검색시에 와서, 그래서 여기 내 사기 솔루션을 문서화 것이다 : 나는 그것을 여러함으로써 단지 가고있어 결국
을 Assimp 소스 코드를 약간 수정했다. 문자열 문제를 해결하는 것은 나중에 빌드에서 실패하기 때문에 제대로 작동하지 않습니다. 나는 아래에 만든 편집 내용을 나열 할 것입니다. 한 번에 하나씩 작성한 다음 다시 작성하는 것이 좋으며, 설치에 대한 이유가 무엇이든간에 필요한 경우가 있습니다. 링크 오류를 수정하는 또 다른 방법을 찾아야 할 필요가있는 경우 Exporter.cpp에 대한 마지막 편집으로 인해이 솔루션으로 모델 내보내기를 수행 할 수 없습니다.
그것은 깨끗한 해결책이 아니며 Assimp의 차기 버전으로 대체 될 것입니다. 그 시점에서 나는 그것을 그냥 삭제할 것입니다. StringComparison.h에서
,의 ASSIMP_stricmp
기능을 편집 #ifdef와의 else
절 제외한 모든 주석 : 비슷한 일을 할
/*#if (defined _MSC_VER)
return ::_stricmp(s1,s2);
#elif defined(__GNUC__)
return ::strcasecmp(s1,s2);
#else*/
char c1, c2;
do {
c1 = tolower(*s1++);
c2 = tolower(*s2++);
}
while (c1 && (c1 == c2));
return c1 - c2;
//#endif
이는 MinGW로 구축 assimp-3.3.1위한 것입니다 ASSIMP_strincmp
에 있습니다.
다음으로 ::_fullpath
에 대한 오류는 DefaultIOSystem.cpp
에 있습니다. 또한 현재 snprintf이 정의되지 않은 것에 대해 불만을
ai_assert(in && _out);
// char* ret;
//#if defined(_MSC_VER) || defined(__MINGW32__)
// ret = ::_fullpath(_out, in, PATHLIMIT);
//#else
// use realpath
// ret = realpath(in, _out);
//#endif
// if(!ret) {
// preserve the input path, maybe someone else is able to fix
// the path before it is accessed (e.g. our file system filter)
// DefaultLogger::get()->warn("Invalid path: "+std::string(in));
strcpy(_out,in);
// }
이에 대한 나의 "수정"단지 다른 모든이 기능의 대체 옵션을 주석으로 사용하는 것이 었습니다. 현재 snprintf 전에 밑줄을 추가하려면 다음 #DEFINE을 변경 StringUtils.h
편집 :
# define ai_snprintf _snprintf
으로 atof 정의되지 대해 :: 오류도 있습니다. 당신이 그것을 구축 얻어야한다 StringUtils.h
에
을
#include <cstdlib>
를 추가하여이 문제를 해결할 수 있지만 내가 거의 모두 사용할 수 있기 때문에 내 특정 CMake의 setttings에 (이 될 수 Exporter.cpp
에서 링크 오류가있을 것입니다 모델 형식). 가 내장 된이 후
Exporter::ExportFormatEntry* gExporters = 0;
을 미세 달렸다 : 나는 gExporters
의 정의를 주석이로 대체하여 해결했습니다. 라이브러리 파일은 code
폴더에 있습니다. libassimp.dll.a를 lib 빌드 경로와 libassimp에 놓습니다.귀하의 실행 파일의 경로에 DLL을.
물론 VisualStudio를 사용하여 설치할 수도 있습니다. (설치하기가 쉽지 않았기 때문에) 또는 Linux로 구축했기 때문입니다. Windows 포트가 필요했습니다.)
그들은 표준의 C 헤더'string.h'에없는) C 함수. – juanchopanza
정말로 #include을 코드에 포함 시켰습니까? –
아마도 이러한 문자열 기능을 가진 Mys 헤더를보고있을 것입니다. mingw32 환경에는 이러한 POSIX 기능이 없습니다. –