Я хочу создать расширяемое приложение с помощью плагинов с C ++ и Python - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу создать приложение, которое будет расширяться с помощью плагинов.

Я знаю, что у меня есть 2 варианта.

  1. Я могу создать свой собственный интерпретируемый язык и приложение со встроенным переводчиком для этого языка.
  2. Я могу использовать один из существующих языков, например Python, Lua или другой язык сценариев.

Я хочу использовать вариант 2. И я знаю, что должен создать слой для внешнего языка, чтобы обеспечить связь между этим языком и моим приложением. Но я не знаю, как это сделать. Может быть, я должен использовать межпроцессное взаимодействие или что-то в этом роде.

Давайте предположим, что у меня есть приложение, написанное на C ++. В начале это может быть даже простое консольное приложение, отображающее несколько параметров. И я хочу написать плагин в Python, например:

option = "additional option"
myApp.addOption(option)

А потом:

  1. Я запускаю свое приложение

  2. Мое приложение загружает плагин

  3. Я вижу мое приложение с этой дополнительной опцией, отображаемой

Я хочу сделать эту простую вещь, чтобы понять, как это работает, и тогда я смогу сделать что-то более сложное.

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Вы можете начать с просмотра документации по языкам (если вы новичок):

Python -> https://docs.python.org/3/ Lua -> https://www.lua.org/docs.html

Библиотеки C ++ также можно вызывать в C (если вы достаточно осторожны), вы также можете посмотреть на это https://www.teddy.ch/c++_library_in_c/

0 голосов
/ 13 февраля 2020

Вы должны знать, что с осторожностью библиотеку C ++ можно вызывать из программы C, в основном, используя extern "C" для отключения искажения имен . На Linux читайте также C ++ dlopen mini Howto .

Затем вам нужно прочитать главу Расширение и встраивание интерпретатора Python

Наконец, Python является открытым исходным кодом, поэтому, пожалуйста, изучите его исходный код .

Я могу использовать один из существующих языков, например: Python, Lua или другой язык сценариев.

Я настоятельно рекомендую рассмотреть возможность использования GNU Guile или расширения Ocaml .

И оба TensorFlow или NumPy могут вас вдохновить, поскольку они являются библиотеками с открытым исходным кодом (написаны на C и / или C ++), которые можно использовать с Python.

...