2012-10-17 3 views
4

Xamarin에서 Good Dynamics SDK를 사용하려고합니다. Objective-C를 잘 모르므로 여기에서 약간 손실됩니다. 이것은 개념 증명에 대한 시도이며, 이것이 실제로 수행 가능한지 확실하지 않습니다.Xamarin이 원시 코드로 컴파일하지 못했습니다.

GD 파일을 GD.framework 디렉터리에서 GD.a로 추가하고 API 바인딩을 구현하고 샘플 XCode 프로젝트에서 응용 프로그램 시작 논리를 복제하려고 시도했습니다.

모노 디벨로피 (Mono Develop)가 ApiDefinition의 모든 것을 빨간색으로 표시하더라도 빌드 할 수있었습니다. 이 이것은 더 많은 위해 계속 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) 
      ... 

로그인 오류의 일부이며 오류

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

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

으로 완료 구축 할 때

는 지금은 조금 붙어있어. 어떤 아이디어?

감사

+0

우리가 볼 수 있도록 바인딩을 제공 할 수 있습니까? GS> 프레임 워크를 다운로드했는데 오류가 이상 할 정도로 armv7 armv7s i386입니다. – dalexsoto

+0

여기에 코드를 넣었습니다. 고마워요 – Gareth

답변

3

iPhone 빌드 옵션의 "Additional mtouch arguments"에 -cxx를 추가해야했습니다.

+1

아마도 그게 해결책인데 왜 그럴까요? –

4

ld 메시지가 .a 정적 라이브러리 파일이 I386에 대한 코드를 포함하지 않는 사실을 말하고있다. 이 아키텍처는 iOS 시뮬레이터에서 코드를 실행할 수있게 해줍니다.

어쩌면 GD 패키지는 다른 아키텍처에 대해 서로 다른 .a을 제공 할 수 있습니다. 이 경우 lipo 도구를 사용하여 fat 라이브러리를 빌드 할 수 있으며 여러 라이브러리가 포함됩니다.

+0

mmm GD.Framework은 armv7입니다 armv7s i386 어쩌면 @ 가레스 뭔가가 누락되었습니다 – dalexsoto

+0

그 특별한 문제를 해결, 감사합니다! iPhone 용 GD와 iPhoneSimulator 용 iPhone이 있습니다. – Gareth

+0

그것은 그것을 해결하지 못한 것 같습니다. 그것은 어떻게 든 실제로 연결을 중단했습니다. iPhoneOS 플랫폼 폴더와 iPhoneSimulatorOS 플랫폼 폴더에서 GD 파일을 추가하고 동일한 결과를 얻었습니다. – Gareth

관련 문제