0

내 Visual Studio Xamarin Forms iOS 프로젝트에서 Visual Studio Cross C++ Platform을 사용하여 빌드하고 배포 한 네이티브 (C++) 라이브러리에 연결합니다. 실제 장치 (Mac 서버를 통해)와 연결하여 실행할 수는 있지만 시뮬레이터를 통해 작동하도록 할 수는 없습니다. 동일한 링크 설정으로 빌드하면 빌드가 실패하고 엔트리 포인트를 찾을 수 없습니다. 연결하지 않기로 선택하면 빌드가 성공하지만 네이티브 코드를 호출하려고하는 시점에서 Entrypointnotfoundexception이 발생합니다.Visual Studio xamarin이 시뮬레이터로 iOS 진입 점을 시뮬레이트하지만 iphone이 아닌 경우

+0

샘플을 업로드 할 수있는 방법이 있습니까? – Paul

+0

나는이 블로그의 단계와 코드에 따라 이것을 얻는다 : http://kerry.lothrop.de/c-libraries/ 그러나 나는 처음부터 다시 작성한보다 복잡한 해결책을 얻는다. – PatMac

+0

이 솔루션이 문제를 조사하는 데 도움이 되었습니까? – PatMac

답변

0

샘플 코드 here을 사용하여 내 의견에서 example을 직접 보았습니다. 나는 제대로 작동하려면 몇 가지 일을해야했습니다. 내 문제는 Xamarin.iOS에 있었지만 동일한 단계가 Xamarin.Forms에 적용될 수 있습니다. 이미 플랫폼 별 통합 작업이 있다고 가정합니다.

물리적 장치에서 작동하는 코드가 있으므로 .a 라이브러리에 이미 Native Static Reference이 있어야합니다. 하지만 iOS 시뮬레이터는 x86_64 아키텍처 (iOS 11 이상, does not support i386)에서 실행되지만 기기는 ARM의 일부 버전/변형에서 실행될 가능성이 큽니다. 라이브러리가 기기의 아키텍처 만 지원하도록 제작 된 것 같습니다. 당신은 당신의 맥에서 lipo을 실행하여이 문제를 확인할 수 있습니다

% lipo -info /usr/lib/libCLib.iOS.a

이 (this article 참조)뿐만 아니라 시뮬레이션의 아키텍처를 지원하기 위해 지원해야 아키텍처에 C++ 프로젝트를 빌드, 다음과 같이, 그들을 결합 :

lipo -create -output libCLib.iOS.a libCLib.iOS-x8664.a libCLib.iOS-arm64.a

다시 Visual Studio에서 새 Native Static Reference 파일로 출력하는 .a 파일을 사용하십시오. 프로젝트 설정에서 x86_64으로 Supported Architectures을 변경하면 모든 것이 가능합니다. 희망이 사람을 도움이됩니다.