2012-08-16 69 views
0

我一直在努力讓OpenNI在我的Mac OS X 10.7上工作。我從openni.org安裝了OpenNI,NITE和Sensor的最新不穩定二進制文件。來自OpenNI的(預編譯的)示例示例工作正常,但只要我自己寫了一些東西,它就開始失敗。 例如,見下面:用於建築x86_64的_xnForceShutdown openni符號找不到

未定義符號: 「_xnForceShutdown」,從引用: : XN ::上下文:: SetHandle(XnContext *)在sample.o 「_xnContextUnregisterFromShutdown」,從參考xn :: Context :: SetHandle(XnContext *)in sample.o 「_xnContextRelease」,引用來自: xn :: Context :: SetHandle(XnContext *)in sample.o 「_xnContextAddRef」,引用來自: xn: :sample.o中的Context :: SetHandle(XnContext *) 「_xnContextRegisterForShutdown」,引用來自: sample.o中的xn :: Context :: SetHandle(XnContext *) LD:符號(S)沒有發現建築x86_64的 collect2:LD返回1個退出狀態 化妝:* [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

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

+0

謝謝。我不得不使用lib路徑lib名稱(例如OpenNI,XnCore)。 Eclipse會完成其餘部分(lib + * + .dylib)。應用您的更改後,我可以編譯但仍然無法運行該程序。它抱怨缺少二進制文件。我搞砸了我希望解決這個問題的gcc設置,現在我正在重新安裝xcode,並希望gcc/g ++將被重新安裝,並且我可以開始研究實際問題了! – user1604228 2012-08-17 15:50:57

+0

它的工作!非常感謝你。 – user1604228 2012-08-17 16:20:39