2017-12-06 8 views
0

이 질문은 다음과 같은 내용으로 계속됩니다 previous one 현재이 (https://github.com/emilwojtaszek/leveldb-swift) 라이브러리를 swift 2에서 swift 3/4로 마이그레이션 중입니다. 다음은 내 포크 https://github.com/lu4/leveldb-swift/tree/MigrationFromSwift2ToSwift3에 대한 링크입니다 (대상 지점은 MigrationFromSwift2ToSwift3 임).신속한 원인으로 써드 파티 C 라이브러리 가져 오기 오류 "프레임 워크 모듈 안에 비 모듈러 헤더 포함"

초기 코드 기반의 모든 문제를 해결할 수 있었고 코드가 다음과 같은지 확인하십시오. 달리는.

가 'LevelDB.c'프레임 워크 모듈 내부의 비 모듈 헤더 포함 :

그러나 내가 해결하는 방법을 이해하지 못하는 오류의 새로운 유형을 가지고 최신 마스터 LevelDB C 코드를 업데이트하려고 후 : '/Path/to/Project/leveldb-swift-migration/vendor/leveldb/include/leveldb/export.h'

인터넷에 대한 조사를 해봤지만 여기에 설명 된 문제는 관련없는 것 같습니다 나는 비틀 거렸다. 여기에 어떤 도움에 감사드립니다

Issue

문제의 이미지는, 사전에 감사합니다!

답변

0

나는 혼합 언어 프레임 워크로 결코 100 % 확실하지 않습니다. 그러나과 같은 오류 이 스위프트 프로젝트에서 일어나는 : 당신이 프레임 워크에 브리징 헤더를 사용할 수 없기 때문에

  • 당신이 #import Foo-Framework.h에서 C 헤더 그렇게 스위프트 코드를 노출하고,
  • 헤더 자체가 대상에 "공개"로 표시되지 않습니다.

"모듈화되지 않음"은 "게시 된 모듈 인터페이스의 일부가 아님"을 나타냅니다. 적어도 Swift-C 믹스에서는 C 헤더를 공용으로 만 사용할 수 있습니다. 거기에 개인 헤더 파일을 가져올 방법이 없습니다. 이상하게 보입니다.

분명히 말하자면, 스위프트가 아닌 코드로 파일을 가져 오는 것이므로 Xcode 프로젝트에서 export.h 헤더 파일을 찾고 파일 속성 (⌘⌥1)을 열고 파일에서 공용 공개를 확인하십시오. 프레임 워크 타겟 :

enter image description here