0

我一直试图让 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",引用自:xn::Context::SetHandle(XnContext*) in sample.o "_xnContextAddRef",引用自:xn::Context::SetHandle(XnContext*) in sample.o "_xnContextRegisterForShutdown",引用自: xn::Context::SetHandle(XnContext*) in sample.ol 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; 
    };

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

4

1 回答 1

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 拖到项目中并勾选“将项目复制到目标组的文件夹(如果需要)”,将/usr/include/ni/路径添加到标题搜索路径中。请注意,根据您最终在 OpenNI/NITE 中使用的功能,您还需要链接到其他库(例如 libnimCodecs、libXnCore 等)。

于 2012-08-17T08:40:09.357 回答