Создание FFI между C и моим языком

Допустим, я реализовал язык программирования, (назовем его теперь). довольно похоже на C.

Я хочу, чтобы мои пользователи имели доступ к функциям и структурам данных из уже существующих библиотек Си. Это возможно? Если это так, как будет выглядеть наивная реализация?

  • реализовано в C ++
  • компилируется в машинный код
  • нужен доступ к библиотекам C с закрытым исходным кодом

0

Решение

Это во многом зависит от того, какой язык является.

Если это скомпилированный язык, то вам нужно создать соответствующий код на ассемблере (посмотрите «соглашения о вызовах», в частности, соглашение о вызовах C) для вызова соответствующей функции C. Если вы используете LLVM, вы можете сделать это довольно легко, используя declare а также call заявления. После того, как вы это сделаете, вам нужно будет связать исполняемый файл с рассматриваемой библиотекой C.

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

3

Другие решения


По вопросам рекламы [email protected]