2009-08-14 12 views
2

Ich versuche, jna Mapping für libfaad2 zu schreiben. Die Bibliothek verwendet mp4ff zum Analysieren von MP4-Dateien. mp4ff ist in libmp4ff.lib in Windows und libmp4ff.a in Linux kompiliert. JNA sucht nur nach .dll/.so-Dateien. Wie kann ich dieses mp4ff in jna laden?JNA laden .a/.lib-Bibliothek

EDIT

Ich denke this Frage hat die Antwort. Ich hasse AAC, ich habe vier Tage damit verbracht, ungültigen Speicherzugriff mit ffmpeg zu debuggen, jetzt benutzt libfaad einige seltsame Bibliotheken. :(

Antwort

5

denke ich, dass Sie Recht haben, dass die Antwort in this hier relevant ist. Auf UNIX-basierten Systemen, .a Dateien sind eine spezielle Art von Archiv, eine Bibliothek in Betrieb, die nur statisch in eine Anwendung verknüpft werden (es klingt wie eine .lib Datei ist die gleiche Sache unter Windows.) Das bedeutet, dass es keine Möglichkeit gibt, diese Bibliothek zur Laufzeit zu laden, da Sie eine dynamische Bibliothek benötigen. Aber wissen, dass dies keine Einschränkung von JNA ist, ist es ein allgemeine Beschränkung, wie die meisten Betriebssysteme funktionieren

Statische Bibliotheken werden "Teil" einer resultierenden ausführbaren Datei (oder Bibliothek) während dynamische Bibliotheken zur Laufzeit geladen werden können.Es gibt Vor- und Nachteile von jedem (zum Beispiel statische Bibliotheken) ein a Anwendung autark, indem Sie nicht darauf angewiesen sind, dass andere Bibliotheken vorhanden sind und in den richtigen Versionen, aber dynamische Bibliotheken können sowohl Speicherplatz auf der Festplatte und im Speicher als auch eine einzige Datei zur Aktualisierung bei Sicherheits - oder anderen Bugfix - Patches speichern). Die meisten Programme, die ich gesehen habe, können sowohl in einer statischen als auch in einer dynamischen (gemeinsam genutzten) Bibliothek kompiliert werden. Daher wäre ich überrascht, wenn Sie nicht irgendwo finden könnten, wonach Sie suchen (oder selbst kompilieren).

+0

Danke für die Antwort. Ich habe eine DLL kompiliert und es funktioniert. –