[英]Does php-cpp work for C library?
但是如果我可以将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 ¶ms)
{
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.