我想使用 C++ 和 Python 通过插件创建一个可扩展的应用程序

I want to create an extensible app via plugins with C++ and Python

我想创建一个可通过插件扩展的应用程序。

我知道我有两个选择。

  1. 我可以使用该语言的内置解释器创建自己的解释性语言和应用程序。
  2. 我可以使用现有语言之一,例如 Python、Lua 或其他脚本语言。

我想使用选项 2。而且我知道我必须为外部语言创建一个层以启用该语言和我的应用程序之间的通信。但我不知道该怎么做。也许我必须使用进程间通信或类似的东西。

假设我有一个用 C++ 编写的应用程序。一开始,它甚至可能是一个显示几个选项的简单控制台应用程序。我想在 Python 中写一个这样的插件:

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

然后:

  1. 我启动我的应用程序

  2. 我的应用加载插件

  3. 我看到我的应用显示了这个附加选项

我想做这个简单的事情来了解它是如何工作的,然后我就能做一些更复杂的事情。

您应该注意,可以从 C 程序调用 C++ 库,主要是通过适当地使用 extern "C" 来禁用 name mangling. On Linux, read also the C++ dlopen mini Howto

那么你需要阅读章节Extending and embedding the Python interpreter

终于Python开源了,请大家研究一下source code

I can use one of the existing languages such as Python, Lua or another scripting language.

我强烈建议考虑使用 GNU Guile or extending Ocaml

而且 TensorFlow or NumPy 都可以激发您的灵感,因为它们是开源库(用 C and/or C++ 编码),可从 Python.

开始使用

您可以先查看语言的文档(如果您是新手):

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

C++库也可以在C中调用(如果你足够细心的话,你也可以看看这个) https://www.teddy.ch/c++_library_in_c/