2009-08-14 2 views
2

Я пытаюсь написать jna mapping для libfaad2. Библиотека использует mp4ff для разбора файлов mp4. mp4ff компилируется в libmp4ff.lib на windows и libmp4ff.a на linux. JNA ищет файлы .dll/.so. Итак, как я могу загрузить этот mp4ff в jna?JNA load .a/.lib library

EDIT

Я думаю this вопрос есть ответ. Я ненавижу AAC, я потратил 4 дня на отладку недопустимого доступа к памяти с помощью ffmpeg, теперь libfaad использует некоторые странные библиотеки. :(

ответ

5

Я думаю, что вы правы в том, что ответ в this здесь имеет значение. В системах типа UNIX файлы .a представляют собой особый тип архива, содержащий библиотеку, которая может быть только статически связана с приложением (она звучит как файл .lib - это то же самое в Windows). Это означает, что нет возможности загружать эту библиотеку во время выполнения, поскольку вам понадобится динамическая библиотека. Но знайте, что это не ограничение JNA, это общее ограничение того, как работают большинство операционных систем.

Статические библиотеки становятся «частью» результирующего исполняемого файла (или библиотеки), тогда как динамические библиотеки могут быть загружены во время выполнения. Есть преимущества и недостатки каждого (например, статические библиотеки делают a более непригодным, не полагаясь на наличие других библиотек и в правильных версиях, но динамические библиотеки могут сохранять как пространство на диске и в памяти, так и один файл для обновления, если есть исправления безопасности или другие исправления). Большинство программ, которые я видел, могут быть скомпилированы как для статической, так и для динамической (общей) библиотеки, поэтому я был бы удивлен, если бы вы не смогли найти то, что ищете где-нибудь (или скомпилировать его самостоятельно).

+0

Спасибо за ответ. Я скомпилировал dll, и он работает. –

Смежные вопросы