Sharpie가이 SDK에 대해 컴파일 가능한 코드를 생성 할 수 없어서 P/Invoke를 사용하여 iOS SDK에 바인딩하는 래퍼를 작성했습니다.xamarin ios 바인딩의 네이티브 연결 오류
나는 그런이 한 많은 연결 문제를 데 참조 래퍼 프로젝트와 iOS 앱을 컴파일 :
엠 터치 : 오류 MT5210 : 기본 연결 실패, 정의되지 않은 심볼 : 표준 : : 로케일 :: 고전(). 모든 필요한 프레임 워크가 참조되었으며 기본 라이브러리가 제대로 링크되어 있는지 확인하십시오. MTOUCH : 오류 MT5210 : 기본 연결에 실패했습니다. 정의되지 않은 기호 : std :: __ throw_bad_cast(). 모든 필요한 프레임 워크가 참조되었고 네이티브 라이브러리가 올바르게 링크되어 있는지 확인하십시오. MTOUCH : 오류 MT5210 : 기본 연결이 실패했습니다. 정의되지 않은 기호 : std :: invalid_argument :: invalid_argument (std :: string const &). . 필요한 모든 프레임 워크가 참조 된 네이티브 라이브러리가 제대로 연결되어 있는지 확인하십시오. (이 complete log file에 전체 로그를 찾아주세요)
아이폰 OS 프로젝트에서 전달 된 여분의 모노 터치 인수는 아래에 설명되어 있습니다 :
-cxx -v -gcc_flags "-L $ {PROJECTDIR} -lstdC++ -lresolv -liconv -lxml2 -lz -ObjC -force_load $ {PROJECTDIR} /Libs/libcrypto.a"-cxx -v -gcc_flags "-L $ {ProjectDir} -lstdC++ -lresolv -liconv -lxml2 -lz -ObjC -force_load $ {ProjectDir} /Libs/libssl.a"-cxx -v -gcc_flags "-lstdC++ -lresolv -liconv -lxml2 -lz- ObjC -L $ {ProjectDir} -framework 보안 -fr amework CoreVideo -framework CoreMedia -framework AVFoundation -framework CFNetwork에서 -framework 가속화 -framework AudioToolbox -framework의 CoreAudio -framework 재단 -framework에있는 CoreGraphics -framework UIKit -force_load $ {PROJECTDIR} /Libs/libsipwrapper.a -dead_strip -all_load "
SDK는 libcrypto.a, libssl.a 및 libsipwrapper.a의 세 라이브러리로 구성됩니다.
인터넷상의 많은 기사/게시물에 이어 -lstdC++, lz 및 ObjC와 같은 표준 라이브러리를 추가하는 것이 좋습니다. 그러나 이것은 제 경우에는 효과가없는 것 같습니다.
내가 또한 세 개의 라이브러리와 래퍼 코드를 포함하는 바인딩 프로젝트를 만들려고 한 내용이 linkwith 파일에 추가는 것 같아 :[조립 : LinkWith ("libsipwrapper.a" , LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Arm64, Frameworks = "CoreVideo CoreMedia AVFoundation CFNetwork AudioToolbox CoreAudio Foundation CoreGraphics UIKit 가속화", ForceLoad = false, SmartLink = true, IsCxx = true, LinkerFlags = "-lstdC++ -lresolv -liconv - lxml2-lz-ObjC ")]
문제가 해결되지 않았습니다. ved 및 설명 된 연결 오류가 계속됩니다.)
일을 당신의 운영자와 파일이 정말 터미널 사용에 대한 불평이 기호가있는 경우는 확인이 -> grep 명령, 모든 아키텍처 당신이를 :
프로젝트의 자세한 내용을 모른 채
(아래도 매우 중요하다 @NyxSway에 의해 기술 된 두 점을 확인) 지금 확인하고 피드백을 보내십시오. 2. 예 [DllImport ("libsipwrapper")] 대신 [DllImport ("__ Internal")]을 사용하고 있습니다. –