偶尔,我会遇到涉及用 Java、PHP 或 Python 创建应用程序框架或网站的编程技术,但当需要复杂的算法时,用 C 或 C++ 编写这些算法,并在您的应用程序中将它们作为类似 API 的函数调用来运行。 Java/PHP/Python 代码。
我一直在网上搜索和搜索此内容,除非我不知道该做法的名称,否则我似乎找不到任何内容。
简单地说,我怎样才能:
- 用 C 或 C++ 创建函数或类
- 将它们编译成 DLL/二进制/某种形式
- 从以下位置运行函数 -
- Java
- PHP
- Python
- 我怀疑必须在 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/