我一直试图让OpenNI在Mac OS X 10.7上运行。我从openni.org安装了OpenNI,NITE和Sensor的最新不稳定二进制文件。来自OpenNI的(预编译的)示例示例工作正常,但是一旦我写了自己的东西,它就开始失败了。 例如,见下文:
架构x86_64的未定义符号: “_xnForceShutdown”,引自: sample.o中的xn :: Context :: SetHandle(XnContext *) “_xnContextUnregisterFromShutdown”,引自: sample.o中的xn :: Context :: SetHandle(XnContext *) “_xnContextRelease”,引自: sample.o中的xn :: Context :: SetHandle(XnContext *) “_xnContextAddRef”,引自: sample.o中的xn :: Context :: SetHandle(XnContext *) “_xnContextRegisterForShutdown”,引自: sample.o中的xn :: Context :: SetHandle(XnContext *) ld:找不到架构x86_64的符号 collect2:ld返回1退出状态 make: * [AsusCamera]错误1
我的代码如下:
#include "XnOpenNI.h"
#include "XnCppWrapper.h"
using namespace xn;
extern "C" int printf(const char *, ...);
int main() {
Context context;
printf("hello world\n");
context.Release();
return 1;
};
请帮帮我。我已经尝试过多次重新安装这些库。
答案 0 :(得分:0)
我刚刚使用Qt Creator和Xcode在OSX(尽管是10.6.8)上编译了你的代码,但它确实有效。
undefined symbols
通常意味着您没有链接到库(dylib)头文件引用,因此将libOpenNI.dylib链接到您的项目。
在Qt Creator中我有这样的设置:
QT += core
QT -= gui
TARGET = niTest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += /usr/include/ni/
LIBS += /usr/lib/libOpenNI.dylib
在XCode中,我将libOpenNI.dylib拖到项目上并勾选“将项目复制到desintation组的文件夹(如果需要)”,将/usr/include/ni/
路径添加到标题搜索路径中。请注意,根据您最终在OpenNI / NITE中使用的功能,您还需要链接到其他库(例如libnimCodecs,libXnCore等)