Archived

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

Linking issues on Ice Touch

I attempted to compile an Ice Project in xcode but resulted in library not found for -lIce. I already put /opt/IceTouch-1.0/lib on the Library Search Paths but that did not resolved the problem. Anyone has idea on what is the issue?

Comments

  • matthew
    matthew NL, Canada
    The Objective-C Ice library is called IceObjC, not Ice. If you are a building a Cocoa, or iPhone application then you should use the IceTouch Xcode SDK (as documented in the RELEASE_NOTES file accompanying the distribution). In this case, you don't need to add any library to your linker options.

    I highly recommend that you watch one of my screencasts which shows precisely how to setup an Xcode project for each of the project types for Xcode.

    http://www.zeroc.com/doc/screencasts.html
  • I have reinstall the IceTouch 1.0 Package and follow the video. I was able to build however when attempting to run on the iphone simulator it crashed with the following error.

    Dyld Error Message:
    Library not loaded: @executable_path/libIceObjC.dylib
    Referenced from: blah blah
    Reason: image not found

    Looks like it cannot find the dylib file, do I need to set the library search path? That was not done in the video....
  • benoit
    benoit Rennes, France
    Hi,

    You need to copy the IceObjC shared library to the application bundle for the simulator. This is documented in the RELEASE_NOTES, here's the relevant part:
    For iPhone Simulator applications, the dynamically linked Ice libraries
    must be copied into the application directory. For our iPhone demos,
    this is done in the Xcode project with a post-build script as follows:
    
    if [ $PLATFORM_NAME = iphonesimulator ]; then
      cp $ADDITIONAL_SDKS/usr/local/lib/*.dylib $BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH
    fi
    

    How to add this post build script to the Xcode project is shown in the IceTouch Intro screencast (in the last quarter of the screencast).

    Cheers,
    Benoit.