【问题标题】:I want to create an extensible app via plugins with C++ and Python我想通过带有 C++ 和 Python 的插件创建一个可扩展的应用程序
【发布时间】:2020-02-12 21:18:56
【问题描述】:

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

我知道我有两个选择。

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

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

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

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

然后:

  1. 我启动我的应用程序

  2. 我的应用加载插件

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

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

【问题讨论】:

  • 在哪个operating system上?这很重要!
  • 我使用的是 Windows 10 操作系统。
  • 请接受我对这一事实的最深切哀悼。在我看来,Linux 比 Windows 10 对开发人员更友好
  • 我安装了 Virtual Box 和 Linux 机器。但我不能习惯。我知道 GUI 并不是 Linux 上最重要的思想。最重要的是控制台的力量,安全性和其他一些事情。但我认为 Linux 首先是为管理员服务的,其次是为开发人员服务的。我不是管理员,我是开发人员,只是用户。所以我想要一个可靠、安全、对开发人员友好的环境和直观、舒适的界面。我认为 MacOS 两者都有。但我只是个穷学生,没钱买苹果xD
  • 我认为 Linux 是或曾经是为开发人员服务的。 Linux 的第一批用户(上个世纪)是开发人员。我在 1993 年使用 GNU/Linux,当时没有开发人员技能就无法使用它。那时,您必须为您的显卡重新编译kernel。了解unix philosophy 和free software

标签: python c++ plugins extensibility


【解决方案1】:

您应该注意,可以从 C 程序调用 C++ 库,主要是通过适当地使用 extern "C" 来禁用 name mangling。在 Linux 上,另请阅读 C++ dlopen mini Howto。

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

最后,Python是开源的,所以请研究它的source code。

我可以使用一种现有的语言,例如 Python、Lua 或其他脚本语言。

我强烈建议考虑使用GNU Guile 或扩展Ocaml。

TensorFlow 或 NumPy 都可以激发您的灵感,因为它们是可在 Python 中使用的开源库(以 C 和/或 C++ 编码)。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多