使用freenect库的Apple Mach-O链接器(ld)错误

时间:2011-11-27 14:36:36

标签: c++ xcode linker mach-o

尝试在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 个答案:

答案 0 :(得分:1)

听起来你需要重建libfreenect。

我建议您关注directions on this tutorial,重新安装完所有内容后,再次运行nm测试,看看符号是否最终显示。

如果他们不这样做,请浏览库源并查看它们是否已定义,并且由于某种原因而被简单地条件化。