1

.a, .h, .h & 데이터베이스 파일을 갖는 IOS 용 NeoSpeech 라이브러리 (텍스트 음성 변환)가 있습니다. 이 라이브러리는 ios에서 잘 작동합니다. 이제 저는 Xamarin 프로젝트에서이 라이브러리를 소비해야합니다. 나는 정적 라이브러리를 사용하여 소비하려고하지만 정적 라이브러리 내부에서 neospeech 라이브러리를 사용할 수 없기 때문에 다른 라이브러리 내부에서 라이브러리를 호출 할 수는 없습니다. xamarin에는 또 다른 옵션, 즉 xamarin과 연결되는 기본 C가 있지만 이에 대한 적절한 문서는 없습니다. 또한 scanrio에서 네이티브 라이브러리 연결을 사용하는 것이 좋습니다. 도와주세요.Xamarin의 IOS 라이브러리를 호출하십시오.

감사

답변

0

시도가 헤더 파일 (안 .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로 참조하십시오. 그리고 다른 라이브러리에서와 마찬가지로 모든 클래스를 사용할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 사실 세 개의 라이브러리 파일 (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

+0

또한 세 라이브러리 파일 (libvt_eng_james_univ.a, libvt_eng_james_armv77s64.a 및 libvt_eng_beth_simulation.a)을 모두 결합하여 팻 라이브러리를 만들어야하거나 libvt_eng_james_univ.a에서 작동해야합니다. – Tarlok

+0

@Tarlok 당신은 헤더 파일을 라이브러리가 아닌 sarpie와 함께 사용해야합니다. 공용 클래스 및 메서드의 정의를 분석하고 해당 클래스의 C# 정의를 생성합니다. 내 대답이 업데이트되었습니다. – ad1Dima