mesh icon indicating copy to clipboard operation
mesh copied to clipboard

mesh/src/aabb_normals.cpp doesn't compile with python 3.10 (or 3.9) but does work with python 3.8

Open cga-cmu opened this issue 7 months ago • 2 comments

Error message during compilation (see gcc command line below) mesh/src/aabb_normals.cpp: In function ‘PyObject* aabbtree_normals_nearest(PyObject*, PyObject*)’: mesh/src/aabb_normals.cpp:118:37: error: cannot convert ‘PyObject*’ {aka ‘_object*’} to ‘const PyArrayObject*’ {aka ‘const tagPyArrayObject_fields*’} 118 | npy_intp* v_dims = PyArray_DIMS(py_v); ^~~~ | PyObject* {aka _object*}

Versions (gcc and python, turns out python version matters during this compilation) gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 python 3.10.12

gcc -pthread -B /home/cga/anaconda3/envs/mesh/compiler_compat -Wno-unused-result -Wsign-compare -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/cga/anaconda3/envs/mesh/include -fPIC -O2 -isystem /home/cga/anaconda3/envs/mesh/include -fPIC -DNDEBUG=1 -DCGAL_NDEBUG=1 -DMESH_CGAL_AVOID_COMPILED_VERSION=1 -DCGAL_HAS_NO_THREADS=1 -DCGAL_NO_AUTOLINK_CGAL=1 -Imesh/src -I/tmp/pip-build-env-gglkafvb/normal/lib/python3.10/site-packages/numpy/_core/include -I/home/cga/tools/misc/mesh/build/temp.linux-x86_64-cpython-310/CGAL-4.7/include -I/home/cga/anaconda3/envs/mesh/include/python3.10 -c mesh/src/aabb_normals.cpp -o build/temp.linux-x86_64-cpython-310/mesh/src/aabb_normals.o -O3 -fopenmp

The same problem occurs in spatialsearchmodule.cpp, py_visibility.cpp, and py_loadobj.cpp

I tried casting all the calls that caused this error (PyArray_DIMS and PyArray_DATA), for example: npy_intp* v_dims = PyArray_DIMS(py_v); -> npy_intp* v_dims = PyArray_DIMS((const PyArrayObject*) py_v);

and closest_point=reinterpret_cast<array<double,3>>(PyArray_DATA(result2)); -> closest_point=reinterpret_cast<array<double,3>>(PyArray_DATA((const PyArrayObject*) result2));

Which allowed the gcc compile to complete successfully, but then I got this error when I tried to use mesh:

File "/home/cga/tools/vision/hands/mano-cga/webuser/hello_world/MANO___render.py", line 55, in from opendr.renderer import ColoredRenderer File "/home/cga/.local/lib/python3.10/site-packages/opendr/renderer.py", line 25, in from .contexts.ctx_mesa import OsContext File "opendr/contexts/ctx_mesa.pyx", line 1, in init opendr.contexts.ctx_mesa ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject

cga-cmu avatar Jul 05 '24 04:07 cga-cmu