From: James W. <ja...@fr...> - 2016-08-11 18:06:11
|
Hi, I'm new to Assimp, building with Xcode 4.6.3 for Mac. When I build for 64 bits, all is well, but in 32 bits, there is a compile error (duplicate constructor) in documents.h. The problem is with these constructors: #if defined(__APPLE__) //! Constructor for unsigned long value. explicit GenericValue(unsigned long u64) RAPIDJSON_NOEXCEPT : data_(), flags_(kNumberUint64Flag) { data_.n.u64 = u64; if (!(u64 & RAPIDJSON_UINT64_C2(0x80000000, 0x00000000))) flags_ |= kInt64Flag; if (!(u64 & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x00000000))) flags_ |= kUintFlag; if (!(u64 & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000))) flags_ |= kIntFlag; } #if !defined(__x86_64__) && !defined(__arm64__) //! Constructor for size_t value. explicit GenericValue( size_t u ) RAPIDJSON_NOEXCEPT : data_(), flags_( kNumberUintFlag ) { data_.n.u64 = u; if ( !( u&0x80000000 ) ) flags_ |= kIntFlag|kInt64Flag; } #endif The stddef.h header defines size_t is __typeof__(sizeof(int)), which turns out to be the same as unsigned long, so these two constructors are indeed handling the same type. However, the first one seems to be assuming that it's a 64-bit value, which in this case it isn't. So I'm guessing that the first conditional should be: #if defined(__APPLE__) && defined(__x86_64__) Once I fix that error, I get another... contrib/rapidjson/include/rapidjson/document.h:1087:22: error: call to constructor of 'rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >' is ambiguous GenericValue v(value); ^ ~~~~~ This one has me more befuddled. When I look at the declaration of the rapidjson::UTF8 structure template, I see a bunch of static methods, but no actual data, and no way to convert it to integral types. But the compiler says there are candidate constructors like GenericValue(int i). Help? |