【发布时间】:2008-10-17 11:44:28
【问题描述】:
我必须使用需要 GUI 的 C++ 做一个大学项目。我想为 GUI 使用 Perl/Tk,但我不确定如何将 C++ 链接到 Perl。该项目需要能够来回传递变量。任何人都可以指出一些好的教程/书籍来链接这两者的方向,或者关于我应该如何解决这个问题的任何想法,因为我以前从来没有链接过两种语言。
【问题讨论】:
我必须使用需要 GUI 的 C++ 做一个大学项目。我想为 GUI 使用 Perl/Tk,但我不确定如何将 C++ 链接到 Perl。该项目需要能够来回传递变量。任何人都可以指出一些好的教程/书籍来链接这两者的方向,或者关于我应该如何解决这个问题的任何想法,因为我以前从来没有链接过两种语言。
【问题讨论】:
你也可以试试swig。它是一种从 C/C++ 生成多种脚本语言接口的工具。
【讨论】:
由于 Perl 将提供 GUI,我将 C++ 代码嵌入到 Perl 中。假设会有大量的 C++ 代码,我会将其放入库中。将该库链接到 Perl 的传统方法是使用 XS 创建一个 Perl 模块。 Tutorial for writing XSUBs 和 XS language reference manual 将对此有所帮助。
一种更简单的方法可能是使用Inline 模块。我以前用过Inline::C,效果很好,但我从未尝试过Inline::CPP(C++ 版本)。我看到它有mixed reviews。
【讨论】:
如果我要解决这个问题,我会使用 TCL/TK 创建一个 GUI,然后用 C/C++ 构建一个可以从 TCL/TK 调用的 TCL 扩展。这是 TCL/TK 真正擅长的事情之一(其他动态语言也可以做到这一点,但我喜欢 TCL/TK)。您使用 C++ 位创建一个共享库(Unix 上的 .so 或 Windows 上的 .dll),当您加载该库时,它们会作为命令导入 TCL。
已经提到过的 Swig 是一个帮助自动化包装过程的工具,它可以获取您的 C++ 代码并创建一个包装器,允许将其加载到多种语言中,例如 TCL、Perl、Python、Ruby ...
从http://www.tcl.tk/ 开始,了解 TCL 和 TK 的大量信息。
【讨论】:
如果它是一个小项目,那么花大量时间让两种语言进行对话可能不值得投资。您可能会考虑使用更合适的工具。 C# 与 C++ 对话的痛苦要少得多。
【讨论】: