Есть ли способ построить указатель на функцию, читая файл в C ++

0

У меня есть прототип функции в файле. Есть ли способ создать указатель на функцию, прочитав файл во время выполнения в c++?

Теги:
file
function-pointers

3 ответа

2

Вы правильно ищете libffi, из Википедии:

libffi - это библиотека интерфейса внешних функций. Он предоставляет интерфейс языка программирования C для вызова изначально скомпилированных функций, данных информации о целевой функции во время выполнения, а не времени компиляции. Он также реализует противоположную функциональность: libffi может создавать указатель на функцию, которая может принимать и декодировать любую комбинацию аргументов, определенных во время выполнения.

  • 0
    Где я могу найти подробную информацию о libffi?
  • 0
    Могу ли я получить пример кода, который использует libffi?
Показать ещё 1 комментарий
0

Нет. Прототип функции - это просто утверждение о том, как используется функция; он не может быть выполнен сам по себе.

Если у вас есть имя функции, и вы хотите превратить ее в указатель на функцию, вы можете сделать это, используя dlsym(RTLD_DEFAULT, "fn"). Не рекомендуется.

0

Вы можете использовать системный вызов (используя system функцию стандартной библиотеки) для вызова компилятора, который создает динамическую библиотеку из вашего функционального файла. Затем вы можете загрузить библиотеку с помощью dlopen или LoadLibrary, в зависимости от платформы.

EDIT: Конечно, это не сработает, если у вас действительно есть только прототип, а не определение. В этом случае я сожалею, что неправильно понял ваш вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню