4

I am trying to use the Good Dynamics SDK in Xamarin, I don't know Objective-C well so I am a bit lost here. This is an attempt at a proof of concept, I'm not sure if this is actually doable.

I've added the GD file as GD.a from the GD.framework directory and attempted to implement an API binding and duplicate the application start logic from the sample XCode project.

I managed to get it to build even though Mono Develop is showing everything from the ApiDefinition in red.

When building this is part of the error log Full version here

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc  -Wl,-no_pie -arch i386 -gdwarf-2 -fobjc-legacy-dispatch -fobjc-abi-version=2 -miphoneos-version-min=6.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk  /var/folders/1t/cbdvyj0x4n35m7674l7wvyjc0000gn/T/tmp6df5493a.tmp/main.x86.o -o /var/folders/1t/cbdvyj0x4n35m7674l7wvyjc0000gn/T/tmp6df5493a.tmp/GDTest -framework CFNetwork -framework Foundation -framework GameKit -framework MapKit -framework MediaPlayer -framework MessageUI -framework OpenGLES -framework StoreKit -framework UIKit -framework AddressBookUI -framework SystemConfiguration -framework AddressBook -framework AudioToolbox -framework AVFoundation -framework QuartzCore -framework CoreGraphics -framework CoreLocation -framework MobileCoreServices -framework Security -framework CoreData -framework ExternalAccessory -weak_framework AssetsLibrary -weak_framework Accounts -weak_framework CoreBluetooth -weak_framework CoreTelephony -weak_framework EventKit -weak_framework EventKitUI -weak_framework CoreMotion -weak_framework GLKit -weak_framework iAd -weak_framework NewsstandKit -weak_framework Social -weak_framework Twitter -weak_framework PassKit -weak_framework CoreImage -weak_framework CoreText -weak_framework ImageIO -weak_framework CoreMedia -weak_framework CoreMIDI -weak_framework CoreVideo -weak_framework AdSupport -weak_framework QuickLook -lz -u _mono_pmip -u _CreateZStream -u _CloseZStream -u _Flush -u _ReadZStream -u _WriteZStream -liconv -lmono-2.0 -lmonotouch -L/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib -u _catch_exception_raise  -force_load /var/folders/1t/cbdvyj0x4n35m7674l7wvyjc0000gn/T/tmp6df5493a.tmp/GD.a
    Undefined symbols for architecture i386:
      "std::basic_istream<char, std::char_traits<char> >::gcount() const", referenced from:
          GT::AES::decode(std::basic_istream<char, std::char_traits<char> >&, std::basic_ostream<char, std::char_traits<char> >&, unsigned int&, bool)in GD.a(gtaes.o)
          GT::AES::encode(std::basic_istream<char, std::char_traits<char> >&, std::basic_ostream<char, std::char_traits<char> >&, unsigned int&, bool)in GD.a(gtaes.o)
      "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::find_first_of(char const*, unsigned long, unsigned long) const", referenced from:
          -[GDSetPasswordViewController checkPasswordStrength:] in GD.a(GDSetPasswordViewController.o)
          GD::EacpCReq::EacpCReq(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, GT::Dbb&)in GD.a(GDEacpCommands.o)
          GD::RawSocket::connect()    in GD.a(GDRawSocket.o)
      "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::copy(char*, unsigned long, unsigned long) const", referenced from:
          GD::Socket::toString() constin GD.a(GDSocket.o)
      "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::data() const", referenced from:
          -[GTContainerDH setRemotePublic521:] in GD.a(GTContainerCrypto.o)
          -[GTContainerDH initWithP521] in GD.a(GTContainerCrypto.o)
          -[NSData(GTContainerEncryption) GTEncryptedDataUsingDerivedKey:] in GD.a(GTContainerCrypto.o)
          -[NSData(GTContainerEncryption) GTDecryptedDataUsingDerivedKey:] in GD.a(GTContainerCrypto.o)
          -[GTEncryptedFile streamDidReceiveData:] in GD.a(GTEncryptedFile.o)
          +[NSData(Base64) dataFromBase64String:] in GD.a(NSData+Base64.o)
          +[GTJsonCommandProcessor parseNSData:] in GD.a(GTICCJsonCommandProcessor.o)
          ...

This goes on for a lot longer and it finishes with the error

ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

error MT5202: Native linking failed. Please review the build log.

Now I'm a bit stuck. Any ideas?

Thanks

poupou
  • 43,007
  • 6
  • 74
  • 172
Gareth
  • 230
  • 3
  • 11
  • Could you provide your bindings so we can take a look at them?? I downloaded the GS>framework and it is armv7 armv7s i386 so that error is weird – dalexsoto Oct 17 '12 at 20:09
  • I've put the code here; https://github.com/garethrhughes/GDTest Thanks – Gareth Oct 18 '12 at 08:18

3 Answers3

4

The ld message is telling you that your .a static library file does not contain code for i386. That architecture is required to allow you to run code on the iOS simulator.

Maybe the GD package provides different .a for different architectures. In this case you can use the lipo tool to build a fat library that will contain several architectures.

poupou
  • 43,007
  • 6
  • 74
  • 172
  • mmm GD.Framework is armv7 armv7s i386 maybe @Gareth is missing something – dalexsoto Oct 17 '12 at 20:06
  • That solved that particular problem, thanks! There's a GD for iPhone and separate one for iPhoneSimulator. – Gareth Oct 18 '12 at 08:58
  • It seems that didn't solve it. It somehow stopped actually linking. I've added the GD file from the iPhoneOS platform folder and the iPhoneSimulatorOS platform folder and get the same result. – Gareth Oct 18 '12 at 11:11
3

I needed to add -cxx to the "Additional mtouch arguments" in the iPhone build options.

Gareth
  • 230
  • 3
  • 11
0

This is an old question but, after many hours, we have the full solution for using Good Dynamics with Xamarin.iOS written up in detail here...about 5 different workarounds required.

http://blog.westmonroepartners.com/using-good-dynamics-sdk-v1-8-x-with-xamarin-ios/

jspru
  • 1,008
  • 8
  • 15