c++ - 同时支持 Tcl 和 Python?

标签 c++ python api tcl

我有一个静态链接到 Tcl 的二进制应用程序,前端是 Tcl 解释器。我想为用户提供使用 Python 执行相同命令的能力,作为关键字选项。 Tcl 语法的示例是:

set_foo -foo 1.0 -bar 3.0 -cat x

因此 python 等效项可能如下所示:

set_foo(foo=1.0, bar=3.0, cat="x")

两次构建程序是否更好,一次作为 Tcl 应用程序,一次作为 Python 应用程序?或者只是将所有内容都保留为 Tcl,并拥有一个将在其解释器中调用 Python 脚本的命令?

命令的实现方式是它们对所使用的脚本语言一无所知。该 API 是:

void set_fooCmd(Handler &data);

Handler 是一个 C++ 类,它负责解析选项并将它们提供给命令实现。到目前为止,Handler 是为 Tcl 而不是 Python 实现的。

所有直接与 Tcl 接口(interface)的代码都在其自己的目录中,并从程序的其余部分抽象出调用。

更新: 这不是一个重复的问题: Picking a front-end/interpreter for a scientific code

因为他们在询问是从 Tcl 迁移到 Python 还是 Matlab。我已经知道我想同时支持 Tcl 和 Python,而且我非常想知道人们使用了哪些方法。如:

  1. 从 Tcl 调用 Python 解释器
  2. 为 Python 前端和 Tcl 前端编译单独的应用程序。
  3. 一些其他方法。

最佳答案

您可能想查看类似 SWIG 的内容,这将允许您创建一个具有直接 C 接口(interface)(以您喜欢的任何方式实现)的应用程序,并将该接口(interface)公开给各种其他脚本语言。 SWIG 支持 Tcl 和 Python,以及 Ruby、PHP、Scheme、Perl,and many others.

关于c++ - 同时支持 Tcl 和 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6495965/

相关文章:

c++ - 继承自std::vector,编译错误? (最烦人的解析)

c++ - Qt toDouble() 方法转换为 int

java - 循环生成 JSON

python - 在 Django 中,当我运行 migrate 时,出现错误 : accounts_userinfo. user_id may not be NULL

获取电子邮件哈希时出现 Windows Live Contacts API 错误 - JavaScript

mysql - 将远程 mysql 数据库连接到 Heroku Rails 应用程序

c++ - C++ 中运算符返回的引用和 const 引用

c++ - 使用不相关的指针移动 shared_ptr

python - Django项目——开发与生产

Python,字符串(由变量和字符串组成,连接)用作新变量名?