从其他语言(如Java、PHP、Perl、Python等)调用C/C++代码的最佳方式是什么? 4 月,2 周 Questions & Answers 915 从Java、Python、Perl、PHP等其他语言调用C/C++的最佳方式是什么
# 1 楼答案 来自Perl Inline::C Inline::CPP Inline::Java Inline::Python Inline::Lua 摘自Inline::C-Cookbook: use Inline C => <<'END_C'; void greet() { printf("Hello, world\n"); } END_C greet;
# 2 楼答案 这将取决于语言和您想要的集成类型 所有这些语言都允许您执行系统命令,因此您可以将C构建为可执行文件,并像命令一样调用它。在Python中: os.system("myccode -v args etc") 这种方法的缺点是,您不共享任何内存状态,也不返回很多信息,并且会增加进程旋转的开销。从好的方面来说,它可以在任何地方使用,而且技术含量非常低 每种语言都有自己的机制在同一进程中调用C。例如,Python有C API,您可以将C代码构建到Python扩展中。这允许进行非常紧密的集成,但在学习C API和仔细编写代码以避免内存泄漏方面需要做更多的工作 Python还提供了ctypes,它可以调用C DLL。这比完整的C扩展要容易一些,但并不能提供所有相同的集成机会
# 1 楼答案
来自Perl
Inline::C
Inline::CPP
Inline::Java
Inline::Python
Inline::Lua
摘自Inline::C-Cookbook:
# 2 楼答案
这将取决于语言和您想要的集成类型
所有这些语言都允许您执行系统命令,因此您可以将C构建为可执行文件,并像命令一样调用它。在Python中:
这种方法的缺点是,您不共享任何内存状态,也不返回很多信息,并且会增加进程旋转的开销。从好的方面来说,它可以在任何地方使用,而且技术含量非常低
每种语言都有自己的机制在同一进程中调用C。例如,Python有C API,您可以将C代码构建到Python扩展中。这允许进行非常紧密的集成,但在学习C API和仔细编写代码以避免内存泄漏方面需要做更多的工作
Python还提供了ctypes,它可以调用C DLL。这比完整的C扩展要容易一些,但并不能提供所有相同的集成机会
# 3 楼答案
使用Swig,您可以为调用任何C/C++函数的多种语言生成代码。 http://www.swig.org/
# 4 楼答案
那真的取决于语言。。。有些语言可以直接绑定到c/c++库,而java等其他语言则需要编写显式接口。如果你想解决一个特定的问题,我建议你提供更多关于你想做什么的细节