Можно ли из программы вызвать метод main()?

driverrr

Прошу помощи! Ситуация следующая: я разрабатываю на Java под Android, в C не очень разбираюсь. Есть библиотека FFmpeg для работы с видео. Эта библиотека написана на C, у меня она есть в скомпилированном виде. В библиотеке есть метод main(). Мне нужно написать код на C, и в этом коде нужно вызвать метод main(). Вопрос - можно ли это сделать, и если можно, то как? Можно ли в языке C вызвать метод main() напрямую, а не через операционную систему?Объясню, зачем мне это надо. В библиотеке ffmpeg есть API, но я в нем не разбираюсь. Поэтому единственный вариант для меня - использовать метод main с теми же параметрами, что и в командной строке. ffmpeg есть в виде консольной утилиты, но это не подходит, так как мне надо не просто использовать утилиту, а добавить функционал работы с видео в своё приложение под Android. Для интеграции кода на языках Java и C я использую Java Native Interface. Я рассматривал такой вариант - скачать исходники библиотеки на C, переименовать в них метод main(), затем скомпилировать библиотеку, и тогда использовать. Но это очень долгий и трудоемкий процесс - собирать эту библиотеку именно так, как надо для моего приложения.
5 ответов

driverrr

То что есть метод main() еще не значит, что он доступен для прямого исполнения... Читайте доки про использование, разберетесь как с ней работать по человечески.


driverrr

В библиотеке есть метод main()
Что еще за чушь?
int main(int argc, char ** argv) {
    /* тело программы */
    return CODE;
}
так же как в жабе public static void main.


driverrr

Майн это майн.=) Майн это сама программа.


driverrr

Что-то тоже не уловил. В библиотеке main()? Что должен делать сборщик встретив две функции с одинаковым именим, да еще таким специфичным. И чему должна передать управление система после загрузки в память если сборщик все же сумеет настроить все адреса? Не то что-то здесь. Ваш Etien.


driverrr

driverrr, ну дак и посмотри какие функции вызываются при нужных тебе ключах и потом их дергай из jni