【发布时间】:2008-11-08 16:39:56
【问题描述】:
从其他语言(如 Java、Python、Perl、PHP 等)调用 C/C++ 的最佳方式是什么?
【问题讨论】:
从其他语言(如 Java、Python、Perl、PHP 等)调用 C/C++ 的最佳方式是什么?
【问题讨论】:
Inline::C
Inline::CPP
Inline::Java
Inline::Python
Inline::Lua
use Inline C => <<'END_C';
void greet() {
printf("Hello, world\n");
}
END_C
greet;
【讨论】:
使用 Swig,它允许您为调用任何 C/C++ 函数的多种语言生成代码。 http://www.swig.org/
【讨论】:
这真的取决于语言...有些语言可以直接绑定到 c/c++ 库,而其他语言(例如 java)需要编写显式接口。如果您正在尝试解决特定问题,我建议您提供有关您正在尝试做的事情的更多详细信息。
【讨论】:
这将取决于语言以及您想要什么样的集成。
所有这些语言都允许您执行系统命令,因此您可以将 C 构建为可执行文件,并像命令一样调用它。在 Python 中:
os.system("myccode -v args etc")
这种方法的缺点是您不共享任何内存状态或返回大量信息,并且您有启动进程的开销。从好的方面来说,它可以在任何地方使用,而且技术含量很低。
每种语言都有自己在同一进程中调用 C 的机制。例如,Python 具有 C API,您可以将 C 代码构建到 Python 扩展中。这样可以实现非常紧密的集成,但在学习 C API 和仔细编写代码以不泄漏内存方面都需要做更多的工作。
Python 还提供了ctypes,它可以调用 C DLL。这比完整的 C 扩展要容易一些,但不能提供所有相同的集成机会。
【讨论】: