Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    TypeInfo exception while including pcl library

    SDK Help
    0
    4
    362
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      On 21/10/2013 at 22:41, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   14 
      Platform:      Mac OSX  ; 
      Language(s) :     C++  ;

      ---------
      I am trying to include a pcl library into plugin. pcl builds use typeid and typeinfo statements, which require me to disable -fno-rtti flag to compile (Set "Enable C++ Runtime Types to YES" in build settings). This leads to the following error in linking phase below.
      Is there a way around it?

      Thanks
      z
      Ld ./objectify.dylib normal x86_64
          cd "/Applications/MAXON/CINEMA 4D R14/plugins/objectify"
          setenv MACOSX_DEPLOYMENT_TARGET 10.6
          /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -dynamiclib "-L/Applications/MAXON/CINEMA 4D R14/plugins/objectify/../../../../(build)/Debug" -L../../resource/_api_lib "-F/Applications/MAXON/CINEMA 4D R14/plugins/objectify/../../../../(build)/Debug" -filelist "/Applications/MAXON/CINEMA 4D R14/plugins/objectify/../../../../(build)/objectify.build/Debug/objectify.build/Objects-normal/x86_64/objectify.LinkFileList" -exported_symbols_list ../../resource/_api_lib/export.txt -install_name /./objectify.dylib -mmacosx-version-min=10.6 -dead_strip -no_dead_strip_inits_and_terms ../../resource/_api_lib/lib_api_debug.a -single_module -compatibility_version 1 -current_version 1 -o "/Applications/MAXON/CINEMA 4D R14/plugins/objectify/./objectify.dylib"

      Undefined symbols for architecture x86_64:
        "typeinfo for ObjectData", referenced from:
            typeinfo for Objectify in objectify.o
      ld: symbol(s) not found for architecture x86_64
      clang: error: linker command failed with exit code 1 (use -v to see invocation)

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        On 22/10/2013 at 10:53, xxxxxxxx wrote:

        This is how I would do it

        1. Move all your pcl stuff into a separate *.h and *.cpp. Only *.cpp should contain the pcl includes;
        2. Add an include for your pcl header in your plugin class
        3. Set "Enable C++ Runtime Types to YES" for your target
        4. Go to Build Phases ->Compile Sources, Double click on the main file and add -fno-rtti compiler option.

        This should in principle enable RTTI for the entire project except the main plugin class.

        Cheers.

        --8

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          On 23/10/2013 at 20:51, xxxxxxxx wrote:

          Thanks @eight_io. This works exactly. However, now I am getting weird boost's shared pointer deallocation errors, while exiting the plugin. Any ideas how to fix signal SIGABRT with the trace below?

          #4 0x0000000117b41f3e in void
          boost::checked_deletepcl::search::KdTree<pcl::PointXYZ (pcl::search::KdTreepcl::PointXYZ* ) at
          /usr/local/include/boost/checked_delete.hpp:34
          #5 0x0000000117b42059 in
          boost::detail::sp_counted_impl_ppcl::search::KdTree<pcl::PointXYZ::dispose() at
          /usr/local/include/boost/smart_ptr/detail/sp_counted_impl.hpp:78
          #6 0x0000000117b41bd2 in boost::detail::sp_counted_base::release() at
          /usr/local/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:146
          #7 0x0000000117b41b7d in boost::detail::shared_count::~shared_count() at
          /usr/local/include/boost/smart_ptr/detail/shared_count.hpp:371
          #8 0x0000000117b41b45 in boost::detail::shared_count::~shared_count() at
          /usr/local/include/boost/smart_ptr/detail/shared_count.hpp:370
          #9 0x0000000117b460dc in
          boost::shared_ptrpcl::search::KdTree<pcl::PointXYZ >::~shared_ptr() at
          /usr/local/include/boost/smart_ptr/shared_ptr.hpp:328
          #10 0x0000000117b41495 in
          boost::shared_ptrpcl::search::KdTree<pcl::PointXYZ >::~shared_ptr() at
          /usr/local/include/boost/smart_ptr/shared_ptr.hpp:328
          #11 0x0000000117b40ff2 in
          Triangulator::triangulate(std::vector<std::vector<float,
          std::allocator<float> >, std::allocator<std::vector<float,
          std::allocator<float> > > >&) at /Applications/MAXON/CINEMA 4D
          R14/plugins/Objectify/source/Triangulator.cpp:95
          #12 0x0000000117b3c01b in Objectify::GetVirtualObjects(BaseObject*,
          HierarchyHelp* ) at /Applications/MAXON/CINEMA 4D
          R14/plugins/Objectify/source/object/objectify.cpp:131
          #13 0x00000001007c04a1 in ___lldb_unnamed_function19295$$CINEMA 4D ()

          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

            On 24/10/2013 at 07:17, xxxxxxxx wrote:

            Hard to say without looking at the code, but it seems that this is the issue of using shared pointer. Read the boost best practices on using shared pointers: 1) use named variables for shared pointers 2) use make_shared to allocate them. In the interim, you could also declare them as global variables instead method variables -- that will bomb when you exit Cinema but not earlier.

            --8

            1 Reply Last reply Reply Quote 0
            • First post
              Last post