PHP扩展2:config.m4中的一些基础的宏定义和需要注意的地点

 

PHP_ARG_WITH或者PHP_ARG_ENABLE指定了PHP模块的工作方式,任选一种,我选择的是WITH
PHP_REQUIRE_CXX用于指定这个扩展用到了C++
PHP_SUBST(EXTERN_NAME_SHARED_LIBADD)用于说明这个扩展编译成动态链接库的形式
PHP_ADD_LIBRARY(stdc++,"",SYSFILE_SHARED_LIBADD)用于将标准C++库链接进入扩展
PHP_NEW_EXTENSION用于指定有哪些源文件应该被编译,文件和文件之间用空格隔开

     ext_skel默认生成的模块框架是针对C的,我们要使用C++, 那以上的3,5两个宏就是必须的.另外还要把testext.c改名成testext.cpp,所以PHP_NEW_EXTENSION原本包括的testext.c也要修改.

  1. 在使用C++之后要注意一个小问题,那就是php_testext.h这个文件可能被PHP的其他部分所引用到,而引用者很可能是一个.c文件,所以不能在php_testext.h里包含任何C++所独有的东西.比如标准模版库,类,或者bool类型等等.

  2. 默 认生成的testext.c(现在改名为testext.cpp)了,已经包含了一个测试性质的导出函数,通过那个例子就可以大概明白怎么添加自己的函数 了. zend_function_entry是导出函数列表, zend_module_entry描述了模块的信息. 不过因为是C++了,还是有几点要修改的:

    1. #include "php.h" #include "php_ini.h" #include "ext/standard/info.h"

      要用extern "C" 修饰.

    2. ZEND_GET_MODULE也要用extern "C"修饰

    3. zend_module_entry就是用于描述模块信息的类型,其实就是一个结构,其中第二项不知道是什么含意.在Windows上,这好像是一个描述信息,可以是一个长长的字符串,但是在Linux上似乎只能是跟模块名相同.

  3. 之后的工作就是写自己的代码了.根据设计,提供对外的接口函数,然后写C/C++代码来实现.

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值