DigitalSlideArchive / HistomicsTK

A Python toolkit for pathology image analysis algorithms.
https://digitalslidearchive.github.io/HistomicsTK/
Apache License 2.0
394 stars 117 forks source link

Using std::next() results in a cython build error #219

Closed cdeepakroy closed 8 years ago

cdeepakroy commented 8 years ago

Running python setup.py build_ext --inplace or conda develop --build_ext . to build the cython code produces the following error:

gcc -fno-strict-aliasing -I/Users/cdeepakroy/anaconda/envs/emory/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/cdeepakroy/anaconda/envs/emory/lib/python2.7/site-packages/numpy/core/include -I/Users/cdeepakroy/anaconda/envs/emory/include/python2.7 -c histomicstk/segmentation/label/isbfcpp.cpp -o build/temp.macosx-10.5-x86_64-2.7/histomicstk/segmentation/label/isbfcpp.o -std=c++11 -stdlib=libstdc++ -mmacosx-version-min=10.6 histomicstk/segmentation/label/isbfcpp.cpp:217:25: error: no member named 'next' in namespace 'std' int fx2 = std::next(boundary_listX.begin(), 1); histomicstk/segmentation/label/isbfcpp.cpp:219:25: error: no member named 'next' in namespace 'std' int fy2 = std::next(boundary_listY.begin(), 1); histomicstk/segmentation/label/isbfcpp.cpp:220:25: error: no member named 'prev' in namespace 'std' int lx1 = std::prev(boundary_listX.end()); histomicstk/segmentation/label/isbfcpp.cpp:221:25: error: no member named 'prev' in namespace 'std' int ly1 = std::prev(boundary_listY.end()); histomicstk/segmentation/label/isbfcpp.cpp:222:25: error: no member named 'prev' in namespace 'std' int lx2 = std::prev(boundary_listX.end(), 2); histomicstk/segmentation/label/isbfcpp.cpp:223:25: error: no member named 'prev' in namespace 'std' int ly2 = std::prev(boundary_listY.end(), 2); histomicstk/segmentation/label/isbfcpp.cpp:224:25: error: no member named 'prev' in namespace 'std' int lx3 = std::prev(boundary_listX.end(), 3); histomicstk/segmentation/label/isbfcpp.cpp:225:25: error: no member named 'prev' in namespace 'std' int ly3 = std::prev(boundary_listY.end(), 3); 8 errors generated. error: command 'gcc' failed with exit status 1 Command failed: python /Users/cdeepakroy/work/kitware/emory/girder/plugins/HistomicsTK/setup.py build_ext --inplace

cdeepakroy commented 8 years ago

It seems to be using libstdc++ instead of libc++. The solution suggested in this stackoverflow post seems to work.

cdeepakroy commented 8 years ago

Fixed by PR #220.