UkoeHB / CvVidProc

OpenCV video processing (for object tracking)
MIT License
1 stars 0 forks source link

ImportError in Python 3.8.5 & Build Error in g++ 9.3.0 #5

Closed andylitalo closed 3 years ago

andylitalo commented 3 years ago

Installing worked perfectly, thanks for patching up the package! I hit the following "ImportError" when I import inside a Python shell:

import cvvidproc as cv Traceback (most recent call last): File "", line 1, in File "/mnt/c/Users/andyl/envs/cvkoe/lib/python3.8/site-packages/cvvidproc/init.py", line 4, in from ._core import doc, VidBgPack, GetVideoBackground, HighlightBubblesPack, AssignBubblesPack, VidBubbleTrackPack, TrackBubbles ImportError: /mnt/c/Users/andyl/envs/cvkoe/lib/python3.8/site-packages/cvvidproc/_core.cpython-38-x86_64-linux-gnu.so: undefined symbol: __atomic_compare_exchange_16

Similarly, in C++, the installation was perfect. The build also worked (with a few minor errors) but threw an error during linking ("[100%] Linking CXX executable cvvidproc"). The error message is long, but here's the preamble (and probably most relevant portion):

[100%] Linking CXX executable cvvidproc /usr/bin/ld: CMakeFiles/cvvidproc.dir/Sources/main.cpp.o: in function main': main.cpp:(.text.startup+0x12a): undefined reference toatomic_load_16' /usr/bin/ld: main.cpp:(.text.startup+0x165): undefined reference to `atomic_compare_exchange_16' /usr/bin/ld: main.cpp:(.text.startup+0x17f): undefined reference to `__atomic_load_16'

and the ending portion:

/usr/bin/ld: CMakeFiles/cvvidproc.dir/Sources/rand_tests.cpp.o: in function rand_tests::demo_trackbubbles(CommandLinePack&, cv::Mat&)': rand_tests.cpp:(.text+0x1627): undefined reference toatomic_load_16' /usr/bin/ld: rand_tests.cpp:(.text+0x1663): undefined reference to __atomic_compare_exchange_16' /usr/bin/ld: rand_tests.cpp:(.text+0x1678): undefined reference to__atomic_load_16' /usr/bin/ld: CMakeFiles/cvvidproc.dir/Sources/rand_tests.cpp.o: in function rand_tests::test_timing_numpyconverter(int, bool)': rand_tests.cpp:(.text+0x1f39): undefined reference toatomic_load_16' /usr/bin/ld: rand_tests.cpp:(.text+0x1f73): undefined reference to __atomic_compare_exchange_16' /usr/bin/ld: rand_tests.cpp:(.text+0x1f99): undefined reference to__atomic_load_16' collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/cvvidproc.dir/build.make:190: cvvidproc] Error 1 make[1]: [CMakeFiles/Makefile2:76: CMakeFiles/cvvidproc.dir/all] Error 2 make: *** [Makefile:84: all] Error 2

I'm using Python 3.8.5 and g++/gcc 9.3.0 on linux and have tried this on a virtual environment to make sure the peculiarities of other installed packages didn't interfere.

PS I found that this forum and this one discuss a similar error, but I don't understand how to implement their suggestions, so I thought I'd include links in case they're helpful.

UkoeHB commented 3 years ago

Please try v0.8.1 edit: got your email; try v0.8.3 edit2: there was a typo... try v0.8.4

UkoeHB commented 3 years ago

v0.9.2 compiles successfully on both an Ubuntu test machine with gcc, and MacOS machine with clang.