2015-08-01 6 views
6

Oto moja konfiguracja:Swift aplikacja: „Brak wymaganego modułu” podczas importowania ramy, które importuje bibliotekę statycznych

  1. statyczna biblioteka Celu kodu C nazywa Stat.
  2. Środowisko Swift, które używa kodu z Stat w swoich własnych klasach (ta struktura nazywa się Dyn). Biblioteka statyczna i ta struktura są w tym samym projekcie Xcode.
  3. Aplikacja/projekt Mac, który ma powyższy projekt jako podprojekt i który łączy się z Dyn.

W moim app mam kod jak:

import Cocoa 
import Dyn 
... 
SomeDynClass().doSomething() 

jednak, gdy próbuję skompilować otrzymuję komunikat o błędzie, kiedy import Dyn. Błąd jest

error: missing required module ‘Stat' 

Wydaje moja aplikacja może znaleźć swoje ramy dobrze, ale jakoś musi znaleźć moduł do mojej biblioteki statycznych też?

Stat posiada plik modułu, który jest dość prosty:

module Stat { 
    header "Stat.h" 
    export * 
} 

Chyba muszę wskazać ścieżki wyszukiwania ramy mojego Mac App pod adresem Stat ale nie wiem dlaczego i nie wiem jak to zrobić. Jak rozwiązać ten problem?

+0

znam jej więcej niż rok, ale czy znalazłeś rozwiązanie? Teraz mam podobny problem z OpenSSL. Zbudowałem własne pliki .a libcrypto i libssl i utworzyłem dla nich moduł module.modulemap (nazwa modułu: COpenSSL). Mogę użyć tego w moim szybkim środowisku (również testy działają), ale kiedy używam tego szkieletu w aplikacji, otrzymuję: Brakujący wymagany moduł: COpenSSL – leizeQ

+0

@leizeQ Czy próbowałeś także połączyć się z 'COpenSSL' w swojej aplikacji? Nie jestem pewien, czy to zadziała, ale warto spróbować! – jbrennan

+0

@jbrennan W moim przypadku zarówno Stat jak i Dyn są szybkie. Założę się, że mogę teraz budować przy użyciu XCODE 9.1 (obsługa szybkiej statycznej biblioteki lib). Pytanie, gdzie umieścić mapę modułu dla statystyk i co powinno znajdować się w pliku modulemap? – harshit2811

Odpowiedz

4

wybrać swoje Target, a następnie przejść do Build Settings i ustawić Import Paths w Swift Compiler - sekcji Search Paths:

${SRCROOT}/Stat 

Normalnie moduł będzie nazwie takie same jak biblioteki, jednak nie jestem pewien, w jaki sposób masz Konfiguracja katalogu z module.map (to mogło być nazwane Dyn być może w tym przypadku Ścieżka importu będzie odzwierciedlać nazwę

Ustawienia budowlanej> Swift Compiler> Wyszukiwanie ścieżki.:

enter image description here

$ {SRCROOT}/(katalog z module.map) powinno rozwiązać się raz naciśnięciu klawisza ENTER lub zakładka ..

+0

Ah shoot! Więc próbowałem tego (po twojej sugestii) i to nie działało. Ale to, co musiałem zrobić, to dodać to do mojego celu APP (aplikacja, która łączy się z Dynem, który importuje Stat).Trudno mi przypomnieć, czy w zeszłym tygodniu zmieniłem inne ustawienia, ale uważam, że właśnie to musiałem zrobić. Dziękuję Ci. – jbrennan

+0

Drat, biorę to z powrotem. Byłem w złym projekcie. To, co wydaje się być problemem, to moja struktura Dyn i biblioteka Stat są w zagnieżdżonych projektach. Tak więc aplikacja ma je jako podprojekty, a to wydaje się powodować, że rzeczy nie będą budowane, nawet ze ścieżkami importu sugerowanymi w celu aplikacji. – jbrennan

+0

@jbrennan: W swoich ustawieniach budowania struktury masz zdefiniowane szybkie ścieżki wyszukiwania kompilatora, a jeśli sam zbudujesz strukturę, czy wszystko się właściwie skompiluje? –

Powiązane problemy