无法使用我的应用程序在Mac OSX上为i386目标构建Apache Thrift

时间:2013-06-30 13:40:07

标签: c++ xcode thrift undefined-symbol thrift-protocol

我正在尝试使用Thrift构建我的C ++应用程序,但它失败了。我不明白这个错误。

Ld ./build/Debug/neptune.app/Contents/MacOS/neptune normal i386
    cd /Users/orsa/home/projects/neptune/xcode
    setenv MACOSX_DEPLOYMENT_TARGET 10.7
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -L/Users/orsa/home/projects/neptune/xcode/build/Debug -L/Users/orsa/home/projects/neptune/xcode/../lib -L/usr/local/lib -F/Users/orsa/home/projects/neptune/xcode/build/Debug -F../blocks/Awesomium/build/lib/macosx -filelist /Users/orsa/home/projects/neptune/xcode/./build/neptune.build/Debug/neptune.build/Objects-normal/i386/neptune.LinkFileList -mmacosx-version-min=10.7 -dead_strip ../../../software/Cinder_Github/lib/libcinder_d.a ../blocks/Cairo/lib/macosx/libcairo.a ../blocks/Cairo/lib/macosx/libpixman-1.a ../blocks/Cairo/lib/macosx/libpng14.a ../blocks/OpenCV/lib/macosx/libopencv_calib3d.a ../blocks/OpenCV/lib/macosx/libopencv_contrib.a ../blocks/OpenCV/lib/macosx/libopencv_core.a ../blocks/OpenCV/lib/macosx/libopencv_features2d.a ../blocks/OpenCV/lib/macosx/libopencv_flann.a ../blocks/OpenCV/lib/macosx/libopencv_gpu.a ../blocks/OpenCV/lib/macosx/libopencv_imgproc.a ../blocks/OpenCV/lib/macosx/libopencv_legacy.a ../blocks/OpenCV/lib/macosx/libopencv_ml.a ../blocks/OpenCV/lib/macosx/libopencv_nonfree.a ../blocks/OpenCV/lib/macosx/libopencv_objdetect.a ../blocks/OpenCV/lib/macosx/libopencv_photo.a ../blocks/OpenCV/lib/macosx/libopencv_stitching.a ../blocks/OpenCV/lib/macosx/libopencv_ts.a ../blocks/OpenCV/lib/macosx/libopencv_video.a ../blocks/OpenCV/lib/macosx/libopencv_videostab.a ../blocks/Qhull/libs/macosx/libqhullcpp.a ../blocks/Qhull/libs/macosx/libqhullstatic.a -stdlib=libc++ -lthrift -levent -llibssh2 -framework Cocoa -framework OpenGL -framework CoreVideo -framework QTKit -framework Accelerate -framework AudioToolbox -framework AudioUnit -framework CoreAudio -framework Awesomium -lcrypto -lz -o /Users/orsa/home/projects/neptune/xcode/./build/Debug/neptune.app/Contents/MacOS/neptune

Undefined symbols for architecture i386:
  "vtable for apache::thrift::server::TNonblockingServer", referenced from:
      apache::thrift::server::TNonblockingServer::TNonblockingServer<apache::thrift::TProcessor>(boost::shared_ptr<apache::thrift::TProcessor> const&, boost::shared_ptr<apache::thrift::protocol::TProtocolFactory> const&, int, boost::shared_ptr<apache::thrift::concurrency::ThreadManager> const&, boost::enable_if<boost::is_convertible<apache::thrift::TProcessor*, apache::thrift::TProcessor*>::type, void*>::type) in neptuneApp-11ADA2EE725CBF5F.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "apache::thrift::server::TNonblockingServer::setThreadManager(boost::shared_ptr<apache::thrift::concurrency::ThreadManager>)", referenced from:
      apache::thrift::server::TNonblockingServer::TNonblockingServer<apache::thrift::TProcessor>(boost::shared_ptr<apache::thrift::TProcessor> const&, boost::shared_ptr<apache::thrift::protocol::TProtocolFactory> const&, int, boost::shared_ptr<apache::thrift::concurrency::ThreadManager> const&, boost::enable_if<boost::is_convertible<apache::thrift::TProcessor*, apache::thrift::TProcessor*>::type, void*>::type) in neptuneApp-11ADA2EE725CBF5F.o
  "apache::thrift::server::TNonblockingServer::serve()", referenced from:
      NeptuneBrowserApp::startThriftServer() in neptuneApp-11ADA2EE725CBF5F.o
  "apache::thrift::server::TNonblockingServer::~TNonblockingServer()", referenced from:
      NeptuneBrowserApp::startThriftServer() in neptuneApp-11ADA2EE725CBF5F.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

1 个答案:

答案 0 :(得分:0)

不是真正的答案,但我建议将其发布在邮件列表中。