2016-11-30 2 views
0

Ist es möglich, eine Mac OS X .dylib in einer Android.mk-Datei zu referenzieren, wie für .so-Dateien?Verwenden Sie OSX .dylib mit Android NDK

Ich habe ein C++ - Projekt kompilieren auf meinem Computer, die ich mit dem NDK verwenden muss. Das Projekt verwendet zwei Dylibs. Die Kompilierung funktioniert, aber die Verknüpfung funktioniert nicht (ich habe "undefinierten Bezug auf [...]" Nachrichten).

Antwort

1

Nein, es ist nicht. Ein .dylib hat ein Binärformat, das das zugrundeliegende Linux-Betriebssystem nicht versteht. Sie müssen eine .so-Datei verwenden. Obwohl, wenn Sie den Quellcode für die Bibliothek haben, sollte die Kompilierung zu .so minimale Änderungen erfordern, vielleicht so wenig wie eine Shimschicht

+0

Sind Sie sicher? Das Projekt verwendet auch OpenCV, und ich habe nur .dylib dafür, keine .so-Datei. –

+0

Open CV ist leicht als .so oder als Quellcode verfügbar. Ohne dass es kompiliert werden kann (da der Java-Teil nur darauf achtet, dass die entsprechende native Funktion im Java-Code existiert), wird es entweder bei Link oder Runtime fehlschlagen, weil es nicht in der Lage ist, die Bibliothek zu laden oder die C-Funktion zu finden. –

+0

Sie haben recht, ich habe OpenCV mit Home Brew installiert, aber auch die Android-Version heruntergeladen, um ihre .mk-Datei zu erhalten, die möglicherweise auf die ebenfalls bereitgestellten .so-Dateien verweist. –