繁体   English   中英

php-cpp适用于C库吗?

[英]Does php-cpp work for C library?

我遇到了一个C库 ,我希望在其中使用PHP中的函数。 这个问题让我跟上了php-cpp。 但是如果我可以将php-cpp用于纯C,那对我来说并不是很清楚。

互联网上的大多数消息人士都认为将C与C ++混合起来是微不足道的,所以我想知道是否值得花时间学习我需要学习的东西来实现目标。

但是如果我可以将php-cpp用于纯C,那对我来说并不是很清楚。

如果您尝试包含任何实际具有C语言功能但C语言中不支持的C ++代码。 它根本不会编译。

互联网上的大多数消息人士都认为将C与C ++混合起来是微不足道的

只有当您将C代码包含在C ++程序中时才会出现这种情况。 即便如此,也有一些例外。

如果你这样做是因为你不了解C ++,你可以编写一个C ++程序,好像它是C(有一些例外,如void指针),如果你足够小心的话。

PHP-CPP是一个C ++库,可用于开发PHP扩展。 要求开发PHP扩展,虽然它可能让你的生活变得更轻松。 如果您不了解C ++,或者您不想使用它,则可以放心地忽略PHP-CPP。 有关开发PHP扩展的一些资源(在C中),请参阅“ PHP扩展开发入门 ”。

完全可以从C ++调用C库。 在大多数情况下,可以使用完全相同的语法; 最多,您可能需要使用extern "C" { ... }包装C头文件。

是的,您可以在PHP-CPP中将C混合到C ++中,但对于初学者来说这不是一个好方法,因为您必须了解两者的相关API。

对于那些完成任务的人,您需要包含来自PHP的相应头文件,就像您编写标准C扩展名一样,例如

#include <php.h>
#include <php_globals.h>
#include <php_main.h>
#include <php_network.h>
// etc

您还需要修改PHP-CPP项目的Makefile,并为您的PHP源位置添加准确的包括dirs,对我而言

COMPILER_FLAGS = -I/usr/local/include/php -I/usr/local/include/php/main ... etc ... -Wall -c -O2 -std=c++11 -fpic -o

将标准PHP / ZEND API C代码添加到PHP-CPP函数/类中

Php::Value example(Php::Parameters &params)
{
    zval myval;
    zend_string *hello, *world;

    hello = zend_string_init("hello", strlen("hello"), 0);

    /* Stores the string into the zval */
    ZVAL_STR(&myval, hello);

    /* Reads the C string, from the zend_string from the zval */
    php_printf("The string is %s", Z_STRVAL(myval));

    world = zend_string_init("world", strlen("world"), 0);

    /* Changes the zend_string into myval : replaces it by another one */
    Z_STR(myval) = world;
    zend_string_release(hello);
    zend_string_release(world);

    return Php::Value(Z_STRVAL(myval));
 }

暂无
暂无

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

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