【问题标题】:_xnForceShutdown openni symbol not found_xnForceShutdown openni 符号未找到
【发布时间】:2012-08-16 20:10:22
【问题描述】:

我一直试图让 OpenNI 在我的 Mac OS X 10.7 上运行。我从 openni.org 安装了 OpenNI、NITE 和 Sensor 的最新不稳定二进制文件。 OpenNI 中的(预编译)示例可以正常工作,但是一旦我自己编写了一些东西,它就会开始失败。 例如,见下文:

架构 x86_64 的未定义符号: “_xnForceShutdown”,引用自: xn::Context::SetHandle(XnContext*) 在 sample.o “_xnContextUnregisterFromShutdown”,引用自: xn::Context::SetHandle(XnContext*) 在 sample.o “_xnContextRelease”,引用自: xn::Context::SetHandle(XnContext*) 在 sample.o “_xnContextAddRef”,引用自: xn::Context::SetHandle(XnContext*) 在 sample.o “_xnContextRegisterForShutdown”,引用自: xn::Context::SetHandle(XnContext*) 在 sample.o 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; 
    };

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

【问题讨论】:

    标签: openni


    【解决方案1】:

    我刚刚使用 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 等)

    【讨论】:

    • 谢谢。我只需要使用 lib 路径 lib 名称(例如 OpenNI、XnCore)。 Eclipse 完成其余的工作(lib + * + .dylib)。应用您的更改后,我可以编译但仍然无法运行该程序。它抱怨缺少二进制文件。我搞砸了我的 gcc 设置,希望能解决这个问题,现在我正在重新安装 xcode,并希望重新安装 gcc/g++,我可以开始解决实际问题!
    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 2012-04-26
    • 2021-12-17
    • 2021-07-18
    • 2014-08-31
    • 2018-10-21
    • 2021-01-06
    • 2012-12-28
    相关资源
    最近更新 更多