시도가 헤더 파일 (안 .A 파일)을 받아 C# API를 정의 파일 생성 Objective Sharpie을 사용하기 : ApiDefinition.cs 및 StructAndEnums.cs을. 때로는 StructAndEnums 만 생성하는 파일에 의존합니다. 그것은 괜찮을 수도 있지만 sharpie하지 않으면 당신이 그렇게 검색 할 수있는 몇 가지 오류를보고해야합니다.
그러면 Binding 프로젝트 참조 .a 파일을 만들고 ApiDefinitions를 생성 할 수 있습니다. 서로 다른 프로세서 아키텍처에 대해 .a가 분리되어 있다면, lipo
을 사용하여 Mac OS bash에서 FAT 라이브러리를 만들고 fat lib 만 참조 할 수 있습니다. 당신의 libs가 들어가 있습니다 : 대한 I386의 x86_64의 :
lipo -create libvt_eng_james_univ.a, libvt_eng_james_armv77s64.a libvt_eng_beth_simulation.a -output lib_eng_james_fat.a
수 있음 libvt_eng_james_univ.a 이미 지방이다, 당신은 그것을 당신에게 모든 지방 lib 디렉토리 구조를 보여주지
lipo -info libvt_eng_james_univ.a
하여 확인하실 수 있습니다 시뮬레이터 armv7, 장치 용 armv7s arm64.
그런 다음이 간단한 바인딩 프로젝트를 기본 Xamarin 프로젝트에서 간단한 라이브러리 proj로 참조하십시오. 그리고 다른 라이브러리에서와 마찬가지로 모든 클래스를 사용할 수 있습니다.
답장을 보내 주셔서 감사합니다. 사실 세 개의 라이브러리 파일 (libvt_eng_james_univ.a, libvt_eng_james_armv77s64.a 및 libvt_eng_beth_simulation.a)이 있습니다. 나는 univ.a 파일에 대해 Objective Sharpie를 시도했다. StructsAndEnums.cs 파일 만 만들고 Apidefinition 파일은 없습니다. StructsAndEnums 내의 코드는 다음과 같습니다. static class CFunctions \t { // extern void VT_UNLOADTTS_ENG_James (int nSpeakerID); \t [같이 DllImport ("__Internal")] \t \t [확인 (PlatformInvoke)] \t 정적 통근 공극 VT_UNLOADTTS_ENG_James (nSpeakerID를 INT); } Xamarin 프로젝트에서이 메서드를 호출하는 방법을 알려주십시오. – Tarlok
또한 세 라이브러리 파일 (libvt_eng_james_univ.a, libvt_eng_james_armv77s64.a 및 libvt_eng_beth_simulation.a)을 모두 결합하여 팻 라이브러리를 만들어야하거나 libvt_eng_james_univ.a에서 작동해야합니다. – Tarlok
@Tarlok 당신은 헤더 파일을 라이브러리가 아닌 sarpie와 함께 사용해야합니다. 공용 클래스 및 메서드의 정의를 분석하고 해당 클래스의 C# 정의를 생성합니다. 내 대답이 업데이트되었습니다. – ad1Dima