Hi,
I have been trying for several days to compile the
last version of Alembic (1.5.8 on July 14th 2015) for a
Maya 2015 and 2016 usage on Windows. The latest version of Alembic provides some features I need but that are not included in the version used by Maya 2015 or Exocortex Crate (1.5.5 ?).
Also, Autodesk suggests to use
Visual studio 2012 Update 4 in order to build plugins for Maya 2015 and 2016 (see Compiler Requirement:
http://help.autodesk.com/view/MAYAUL/2016/ENU//?guid=__files_Setting_up_your_build_env_Windows_env_32bit_and_64bit_htm ).
Here are my references for building Alembic on Windows:
Alembic Github:
https://github.com/alembic/alembic with the "Windows build steps" HTML file provided
Build Alembic for Maya 2013:
http://renderloop.blogspot.com/2013/06/build-abcexportabcimport-on-windows.htmlSebastian Lipponer Alembic fork (1.5.5) with Visual Studio 2013:
https://github.com/sebastianlipponer/alembicJonnygarrett Alembic fork (also 1.5.5) with VS 2012:
https://github.com/jonnygarrett/alembic_vs2012Unfortunately, after following all this tutorials (trying to adapt them for Alembic 1.5.8) and using many combinations of versions of the external dependencies, I'm still stuck at the final step: building the Alembic solution in VS 2012... The problem is mainly about Ilmbase and HDF5.
Here are the libraries I have been using on my last try, with CMake
2.8.12.2:
- IlmBase 1.0.3 (probably the version used in Maya 2015)
- ZLib 1.2.8
- Boost 1.53.0 (used in Maya 2015)
- HFL5 1.8.12
- Glut 3.7.6
- Freeglut 2.8.1
- Glew 1.11
You'll find just below all the informations about the errors I have in the Alembic Visual Studio project.
If anyone has been facing the same problem and found a solution, I'm very curious about how you did it!
Hoping this topic will make the Alembic Windows support not so experimental anymore ;-)
Thank you very much!
Jeremie
Here is a summary of the error logs (200 errors) that Visual Studio is providing, with a small sample of the code with the
error when possible:
1) Issues about HDF5 and SZIP on this projects:- AbcCollection_CollectionTest
- AbcCoreAbstractCompoundPropsTest
- All projects with "AbcGeom_"
- All projects with "AbcMaterial_"
- All projects with "AbcCoreHDF5"
- playground
Always the same 4 errors for all the projects above:
error LNK2019: unresolved external symbol SZ_encoder_enabled referenced in function H5Z_init_interface E:\lib-alembic\alembic-1.5.8\lib\Alembic\AbcGeom\Tests\hdf5.lib(H5Z.obj)
error LNK2019: unresolved external symbol SZ_BufftoBuffCompress referenced in function H5Z_filter_szip E:\lib-alembic\alembic-1.5.8\lib\Alembic\AbcGeom\Tests\hdf5.lib(H5Zszip.obj)
error LNK2019: unresolved external symbol SZ_BufftoBuffDecompress referenced in function H5Z_filter_szip E:\lib-alembic\alembic-1.5.8\lib\Alembic\AbcGeom\Tests\hdf5.lib(H5Zszip.obj)
error LNK1120: 3 unresolved externals
2) Issues about Ilmbase in "AlembicAbcCoreOgawa" project. The "half" class of Ilmbase is involved in all the following errors.
-
halfLimits.h - lines 72, 73, 85, 86, 87, 88 (all of the following for each line):
error C2146: syntax error : missing ';' before identifier 'epsilon'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2365: 'std::numeric_limits<half>::half' : redefinition; previous definition was 'member function'
Code sample (line 72): static
half epsilon () throw () {return HALF_EPSILON;}
On error C2146, all the identifiers are : line73='round_error', line85='infinity', line86='quiet_NaN', line87='signaling_NaN', line88='denorm_min',
-
halfLimits.h - lines 63 and 64 (all of the following for each line):
error C2059: syntax error : '('
error C2143: syntax error : missing ',' before '?'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2059: syntax error : 'throw'
error C2334: unexpected token(s) preceding '{'; skipping apparent function body
Plus for line 64:
error C2535: 'int std::numeric_limits<half>::half(void)' : member function already defined or declared
Code sample (line 64): static half
max () throw () {return HALF_MAX;}
-
Readutil.cpp - lines 130, 139, 148 (still for each line):
error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'
Code sample (line 130): iMax = std::numeric_limits<Util::float16_t>
::max();-
IPoints.h in AbcWFObjConvert, line 156:
error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'
Code sample: { return std
::max( m_positionsProperty.getNumSamples(), m_idsProperty.getNumSamples() ); }