Archived

This forum has been archived. Please start a new discussion on GitHub.

IceTouch in Xcode 5 (DP)

Hi,

I know this is still pre-mature since Xcode 5 has not yet been officially released. I am trying out the developer preview of Xcode 5 which has the beta SDK of iOS 7.

I am trying to get the IceTouch plugin to work with Xcode 5 but I am not able do so.

Previously, I used to copy the contents of "/Library/Application Support/Developer/4.x/" to "/Library/Application Support/Developer/4.y/", where 4.x was the old version and 4.y was the new version. This used to work till ZeroC released updates to the latest IceTouch version.

Now if I copy the contents to "/Library/Application Support/Developer/5.0/", the plugin does not work. Till Zeroc releases an official release, can I do some local configurations to make it work ?

thanks
sandeep

Comments

  • xdm
    xdm La Coruña, Spain
    Try to replace the the plug-in Info.plist in slice2objcplugin.pbplugin/Contents/Info.plist with the one attached, it just add the following key.
    <key>DVTPlugInCompatibilityUUIDs</key>
    <array>
       <string>63FC1C47-140D-42B0-BB4D-A10B2D225574</string>
    </array>
    

    Extract it with your favorite zip tool and copy it to replace slice2objcplugin.pbplugin/Contents/Info.plist
  • I did that. Xcode 5 is now showing the "Slice Code Generation" configs in the Build settings for my project.

    However, when I build the code, I still get numerous errors such as these:

    Undefined symbols for architecture i386:
    "_OBJC_CLASS_$_ICEIdentity", referenced from:
    objc-class-ref in IceProxyService.o
    "_OBJC_CLASS_$_ICEInitializationData", referenced from:
    objc-class-ref in IceProxyService.o


    thanks
    Sandeep
  • xdm
    xdm La Coruña, Spain
    Hi,
    Sandeep

    Can you test with the hello demo included in IceTouch demo package, see IceTouch-1.3.0-demos/iPhone/hello. I tested with latest Xcode 5 beta and don't found any problems.

    Can you also post the complete linker command used by Xcode when you encounter this failures.

    Regards,
    José
  • I also have been working with Xcode 5 DP (and GM as of today) and wasn't able to get the plugin going so far. So i just setup the project without the plugin and all has been working fine.

    However, i only get IceTouch to compile in Xcode 5 when i set the deployment target < 7. if i set it to 7, i get a bazillion link errors all related to stdc++. here are a few examples:
    Undefined symbols for architecture armv7:
      "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&)", referenced from:
          Ice::nativeToUTF8(IceUtil::Handle<Ice::BasicStringConverter<char> > const&, std::string const&) in libIceObjC.a(IceCpp_StringConverter.o)
      "std::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char)", referenced from:
          Ice::PropertiesI::load(std::string const&) in libIceObjC.a(IceCpp_PropertiesI.o)
      "std::string::compare(unsigned long, unsigned long, std::string const&) const", referenced from:
          Ice::PropertiesI::getPropertiesForPrefix(std::string const&) in libIceObjC.a(IceCpp_PropertiesI.o)
      "std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >::basic_istringstream(std::string const&, std::_Ios_Openmode)", referenced from:
          IceInternal::setMcastGroup(int, IceInternal::Address const&, std::string const&) in libIceObjC.a(IceCpp_Network.o)
          IceInternal::setMcastInterface(int, std::string const&, IceInternal::Address const&) in libIceObjC.a(IceCpp_Network.o)
          IceInternal::OpaqueEndpointI::OpaqueEndpointI(std::string const&) in libIceObjC.a(IceCpp_OpaqueEndpointI.o)
          Ice::PropertiesI::getPropertyAsIntWithDefault(std::string const&, int) in libIceObjC.a(IceCpp_PropertiesI.o)
          IceInternal::stringToMajorMinor(std::string const&, unsigned char&, unsigned char&) in libIceObjC.a(IceCpp_Protocol.o)
          IceInternal::ProxyFactory::ProxyFactory(IceInternal::Handle<IceInternal::Instance> const&) in libIceObjC.a(IceCpp_ProxyFactory.o)
          IceInternal::UdpEndpointI::UdpEndpointI(IceInternal::Handle<IceInternal::Instance> const&, std::string const&, bool) in libIceObjC.a(IceCpp_UdpEndpointI.o)
    

    I tried adding the stdc++.lib to the linker manually but that doesn't change anything.

    Does anyone know whats up with that?

    Thanks.
  • benoit
    benoit Rennes, France
    Hi,

    By default Xcode links with the libc++ library when targeting iOS 7. However, Ice Touch requires the GNU C++ library. Two solutions:
    • change your project settings: set "C++ Standard Library" to "libstdc++" and add a dummy ".mm" file (it can be empty) to your project to ensure that the C++ settings won't be ignored by Xcode.
    • rebuild Ice Touch from source and set IOS_TARGET_MIN_SDK_VERSION = 7.0 in objc/config/Make.rules. This way, the Ice Touch library will depend on libc++ instead of libstdc++.

    Note that if you're using Xcode 5 GM, you will also need to add the new 37B30044-3B14-46BA-ABAA-F01000C27B63 UUID to the DVTPlugInCompatibilityUUIDs array in the slice2objc Info.plist file mentioned at the start of this thread.

    Cheers,
    Benoit.
  • Thank you. Do you plan a Xcode5 compatible point release to IceTouch 1.3 in the nearest future?
  • I would like to follow up, now that Xcode 7 and iOS 7 are officially out, i was wondering when you plan to make a IceTouch release that will be compatible?

    Thank a lot,
    -r
  • benoit
    benoit Rennes, France
    Hi,

    We are working on it but we can't provide a firm release date, it will be out soon when it's ready.

    Cheers,
    Benoit.
  • any news on the Xcode5 and 64bit compatible IceTouch? Desperately waiting... :)

    Thanks.