java/php/python框架下编译C/C++代码运行算法

2024-04-28 21:52:26 发布

您现在位置:Python中文网/ 问答频道 /正文

有时候,我遇到了涉及在爪哇、PHP或Python中创建应用程序框架或网站的编程技术,但是当需要复杂的算法时,将它们写入C或C++中,并在java /php/python代码中运行它们作为API类函数调用。在

我一直在谷歌上搜索,在网上搜索,除非我不知道这个机构的名字,否则我似乎找不到任何东西。在

简单地说,我怎样才能:

    在C或C++ +/LI>中创建函数或类
  1. 将它们编译成DLL/binary/某种形式
  2. 从运行函数-
    • 爪哇
    • 菲律宾比索
    • Python
  3. 我怀疑JSON/XML类的输出和输入必须在java/php/python和C/C++函数之间创建,这样数据就可以很容易地桥接,但是没关系。在

我只是不知道如何使用这种技术,但它似乎是一种非常聪明的方法,既可以利用Java、PHP和Python的强大功能,又可以将非常快速的编程语言用于大型复杂的任务。在

另一个在我脑海中盘旋的想法是,如果我只使用Java/PHP/Python中的文字来创建函数,那么它的速度会和C一样快吗?在

<>我想用C/C++做的具体任务是大量循环,打一个数据库,分析地图。还没有开始任何工作,现在都是理论。在


Tags: 函数代码算法框架api应用程序机构网站
3条回答

尽管我同意这些评论(你可能是为了好玩,为了生意这是个坏主意),但你可能会对这个similar question感兴趣。上面提到的SWIG framework支持 你提到的所有语言。我在一个使用大量遗留C代码的项目中使用它。不是很简单,但很强大。在

对于Java,你可以搜索JNI(javanativeinterface),有很多指南告诉你如何使用它。在

可以轻松地使用自定义C++代码扩展Python脚本Boost.Python,有关详细信息,请访问此网站:http://www.boost.org/doc/libs/1_50_0/libs/python/doc/

您可以这样使用它:

char const* greet()
{
   return "hello, world";
}

#include <boost/python.hpp>

BOOST_PYTHON_MODULE(hello_ext)
{
    using namespace boost::python;
    def("greet", greet);
}

您需要将其编译到一个共享库中。在windows上会得到一个.dll,在Linux上会得到一个.so。这个库将包含必要的代码,以便python可以使用它。使用示例:

^{pr2}$

这里还有一些例子:http://www.boost.org/doc/libs/1_50_0/libs/python/doc/tutorial/doc/html/index.html

使用时Boost.Python如果不使用弱动态链接,请记住将共享对象链接到python。PHP和Java也有类似的东西。在

至于其他语言,我从来没有在Java中使用过自定义共享库,而是在PHP中使用过,使用本机Api很痛苦。我发现使用swig方式更令人愉快。在

相关问题 更多 >