找不到_xnForceShutdown openni符号

时间:2012-08-16 20:10:22

标签: openni

我一直试图让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; 
    };

请帮帮我。我已经尝试过多次重新安装这些库。

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等)