Ошибка компоновщика Apple Mach-O (ld) при использовании библиотеки freenect - PullRequest
2 голосов
/ 27 ноября 2011

При попытке скомпилировать следующий файл в xcode:

http://openkinect.org/wiki/C%2B%2BOpenCvExample

Я получаю следующие ошибки:

Ld build/Debug/KinectOpenCV normal x86_64
cd "/Users/Scott/Dropbox/Project/KinectOpenCV/KinectOpenCV"
setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Developer/usr/bin/clang++ -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.7.sdk "-L/Users/Scott/Dropbox/Project/KinectOpenCV/KinectOpenCV/build/Debug" "-F/Users/Scott/Dropbox/Project/KinectOpenCV/KinectOpenCV/build/Debug" -filelist "/Users/Scott/Dropbox/Project/KinectOpenCV/KinectOpenCV/build/KinectOpenCV.build/Debug/KinectOpenCV.build/Objects-normal/x86_64/KinectOpenCV.LinkFileList" -mmacosx-version-min=10.7 -lopencv_core.2.3.2 -lopencv_highgui.2.3.2 -lfreenect.0.0.1 -framework GLUT -framework OpenGL -o "/Users/Scott/Dropbox/Project/KinectOpenCV/KinectOpenCV/build/Debug/KinectOpenCV"

Undefined symbols for architecture x86_64:
"_freenect_find_video_mode", referenced from:
  freenect_threadfunc(void*) in main.o
"_freenect_set_video_mode", referenced from:
   freenect_threadfunc(void*) in main.o
"_freenect_find_depth_mode", referenced from:
  freenect_threadfunc(void*) in main.o
"_freenect_set_depth_mode", referenced from:
  freenect_threadfunc(void*) in main.o
"_freenect_select_subdevices", referenced from:
  _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я пробовал все, что могПодумайте, чтобы решить проблему, но не радость.Я пытался компилировать для конкретных архитектур (32-разрядных или 64-разрядных), я пытался перекомпоновать все библиотеки и другие подобные меры, такие как запуск нового проекта и импорт всего заново.

1 Ответ

1 голос
/ 27 ноября 2011

Похоже, вам нужно перестроить libfreenect.

Я бы предложил следовать указаниям в этом уроке и после того, как все будет переустановлено, снова запустите этот тест nm и посмотрите, появятся ли наконец символы.

Если этого не произойдет, выполните поиск по источнику библиотеки и посмотрите, определены ли они и по какой-то причине просто обусловлены.

...