Как использовать .so файлы в качестве основных аргументов в c? - PullRequest
2 голосов
/ 19 июня 2019

Мне нужно написать программу c, которая получает файл .so (shared-object) в качестве аргумента в методе main и вызывает для него функцию f. Он ожидает, что функция f существует в этой библиотеке. Моя программа должна работать для любого файла .so, поэтому я не могу включить их напрямую.

так, позвонив

./myprogram myLibrary.so

myprogram должен сделать что-то вроде этого:

int main(int argc, char *argv[]) {
    return argv[1].f();
 }

Как мне этого добиться и что еще нужно учитывать при компиляции моего кода?

1 Ответ

6 голосов
/ 19 июня 2019

То, что вы пытаетесь сделать, называется «динамическая загрузка» библиотек.В Unix-подобных операционных системах вам нужен вызов dlopen () .Он принимает имя файла и некоторые флаги и открывает указанную общую библиотеку.Затем вы можете использовать подпрограмму dlsym() для поиска отдельных символов (например, вашей функции f ()), которую вы затем можете вызвать в другом месте вашей программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...