java - 在 Java/PHP/Python 框架内运行已编译的 C/C++ 代码中的算法?

标签 java php c++ python c

偶尔,我会遇到涉及用 Java、PHP 或 Python 创建应用程序框架或网站的编程技术,但当需要复杂的算法时,用 C 或 C++ 编写这些算法,并在您的应用程序中将它们作为类似 API 的函数调用来运行。 Java/PHP/Python 代码。

我一直在网上搜索和搜索此内容,除非我不知道该做法的名称,否则我似乎找不到任何内容。

简单地说,我怎样才能:

  1. 用 C 或 C++ 创建函数或类
  2. 将它们编译成 DLL/二进制/某种形式
  3. 从以下位置运行函数 -
    • Java
    • PHP
    • Python
  4. 我怀疑必须在 Java/PHP/Python 和 C/C++ 函数之间创建类似于 JSON/XML 的输出和输入,以便可以轻松桥接数据,但这没关系。

我只是不确定如何实现这种技术,但这似乎是一种非常聪明的方法,可以利用 Java、PHP 和 Python 的强大功能,同时利用非常快速的编程语言进行大型处理。 ,复杂的任务。

我脑海中浮现的另一个想法是,如果我仅使用 Java/PHP/Python 中的文字创建函数,它的运行速度是否会与 C 一样快?

我希望使用 C/C++ 完成的具体任务是大量循环、ping 数据库和分析 map 。工作还没有开始,现在一切都是理论。

最佳答案

您可以使用 Boost.Python 使用自定义 C++ 代码轻松扩展 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。使用示例:

>>> import hello_ext
>>> print hello_ext.greet()
hello, world

以下是更多示例:http://www.boost.org/doc/libs/1_50_0/libs/python/doc/tutorial/doc/html/index.html

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

至于其他语言,我从未在 Java 中使用过自定义共享库,但在 PHP 中这样做过,并且使用 native Api 很痛苦。我发现使用 swig更令人愉快的方式。

关于java - 在 Java/PHP/Python 框架内运行已编译的 C/C++ 代码中的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12028908/

相关文章:

java - 是否可以停止 JNI 调用

Java 断言禁用 Map.remove() 的执行

java - 如何让 MappingJacksonHttpMessageConverter 设置内容长度

php - mysql DELETE 查询出现 JOIN 错误...

php - 解析字符串 - 使用正则表达式或类似的东西?

c++ - 使用 stb 加载图像时出错

java - Struts 数据库登录

php - 无法使用 window.print() 函数打印表格边框

c++ - 用 define 替换两次函数调用

c++ - 与 4.7 g++ 不一致的文字