2014-09-16 4 views
0

라이브러리 나 인터페이스 정의를 포함 몇 가지 추가 프레임 워크와 링커 플래그 나는자 마린 아이폰 OS 바인딩 프로젝트는, 내가 아이폰 OS 바인딩 프로젝트를 만든

을 필요로 다음과 같은 linkwith.cs 컨텐츠를 만들어 내 정적 라이브러리를 추가하지 않는 것
[assembly: LinkWith ("libMyLibrary-iOS.a", LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Simulator,Frameworks = "CoreTelephony SystemConfiguration UIKit Foundation CoreGraphics", LinkerFlags = "-ObjC -all_load -lz -lstdc++", ForceLoad = true)] 

ApiDefinition.cs 파일에서 Objective-Sharpie를 수정하여 누락 된 추가 사항을 복사했습니다. 또한 모든 열거 형을 StructsAndEnums.cs로 이동했습니다.

뭔가 이상한 것으로 나타 났는데, Intellisense는 StructsAndEnums.cs 파일의 열거 형과 함께 일부 속성, 특히 BaseType 및 Static이 빨간색으로 인식되지 않는 경우에 작동하지 않습니다. 빌드가 성공적이면 두 번째로 성공적입니다. 자동 생성 된 파일에 오류가 있거나 빌드를 다시 시도하면 오류가 항상 발생하므로 두 번째 빌드가 정상입니다.

정적 라이브러리 파일은 12.5MB이지만 실제로 .dll 릴리스 빌드가 4kb 밖에되지 않으며 처음 바인딩 라이브러리가 아니기 때문에 .a 라이브러리를 .html로 병합해야합니다. dll 라이브러리.

파일의 빌드 작업을 확인하는 것이 올바른지 확인하십시오.

libMyLibrary-iOS.a은 -> ​​ObjcBindingNativeLibrary

ApiDefinition.cs -> ObjcBindingDefinition

StructsAndEnums.cs - 자 마린의> ObjcBindingCoreSource

특성이 수정되거나 추가 된 프로젝트, 단지 새로운 바인딩 프로젝트 스튜디오 5.3 (빌드 441).

단일보기 응용 프로그램을 만든 솔루션에서 바인딩 프로젝트 라이브러리를 참조로 추가했지만 인터페이스 계약을 사용할 수있는 네임 스페이스가 없습니다.

문제를 해결하거나 디버그 할 수있는 조치가 있습니까?

[편집]

프로젝트를 재건 할 때 내가 얻을 컴파일 에러가 나는이

public delegate string SPLJSONModelKeyMapBlock (string keyName); 

같은 설정 블록에 대해이며,이 인터페이스

[BaseType (typeof (NSObject))] 
    public partial interface SPLJSONKeyMapper { 

     [Export ("JSONToModelKeyBlock")] 
     SPLJSONModelKeyMapBlock JSONToModelKeyBlock { get; } 

     [Export ("modelToJSONKeyBlock")] 
     SPLJSONModelKeyMapBlock ModelToJSONKeyBlock { get; } 

     [Export ("initWithJSONToModelBlock:modelToJSONBlock:")] 
     IntPtr Constructor (SPLJSONModelKeyMapBlock toModel, SPLJSONModelKeyMapBlock toJSON); 

     [Export ("initWithDictionary:")] 
     IntPtr Constructor (NSDictionary map); 

     [Static, Export ("mapperFromUnderscoreCaseToCamelCase")] 
     SPLJSONKeyMapper MapperFromUnderscoreCaseToCamelCase { get; } 

     [Static, Export ("mapperFromUpperCaseToLowerCase")] 
     SPLJSONKeyMapper MapperFromUpperCaseToLowerCase { get; } 
    } 

에서 사용 Trampolines.g.cs의 스크린 샷

Compile error in autogenerated Trampoline.g.cs

답변

1

업데이트

대신 문자열의 대리자 NSString을 돌아보십시오 :

public delegate NSString SPLJSONModelKeyMapBlock (string keyName); 

첫 번째 대답이 두 번째 제대로 수행되지 재 구축과 같은

(처음 실패하면 두 번째 실패합니다).

즉, 자동 생성 된 파일에서 발생하는 빌드 오류를 수정 (또는보고)해야합니다.

+0

답변 해 주셔서 감사 드리며 모든 적절한 정보를 포함하여 질문을 편집하십시오. –

+0

예! 멋지게 작동했습니다. hmmm, iOS 유형을 C# 유형에 사용할시기를 확인해야합니다. 내가 놓치거나 보지 못했을 링크가 있습니까? –

+0

이것은 우리의 버그이며 우리는 자동으로 NSString -> 문자열 변환을해야합니다. –