繁体   English   中英

从其他语言(如Java,PHP,Perl,Python等)调用C / C ++代码的最佳方法是什么?

[英]What is the best way to call C/C++ code from other languages such as Java, PHP, Perl, Python, etc?

从其他语言(如Java,Python,Perl,PHP等)调用C / C ++的最佳方法是什么?

来自Perl

内联中:C
内嵌:: CPP
内嵌的Java ::
内嵌:: Python的
内嵌:: Lua中

摘自Inline :: C-Cookbook

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扩展稍微容易一些,但是没有提供所有相同的集成机会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM