C++ extensions for PHP



我需要为PHP OS Linux(Debian)、编写C++扩展

1.创建文件config.m4:

PHP_ARG_ENABLE (test, Enable test support)
if test "$ PHP_TEST" = "yes"; then
   AC_DEFINE (HAVE_TEST, 1 , [You have test extension])
   PHP_ADD_INCLUDE (/ home / oleg / PROJECTS / QT / lib_swl / include)
   PHP_ADD_LIBRARY (stdc + +, 1 , TEST_SHARED_LIBADD)
   PHP_NEW_EXTENSION (test, test.c, $ ext_shared)
fi

2。编写C++程序测试的文本。C

# include "php.h"
# include "zend_config.h"
ZEND_BEGIN_ARG_INFO_EX (arginfo_readdata, 0,0,2)
ZEND_ARG_INFO ( 1 , param1)
ZEND_END_ARG_INFO ();
PHP_FUNCTION (test);
const zend_function_entry test_functions [] =
{
    PHP_FE (test, arginfo_readdata)
    {NULL, NULL, NULL}
} ;
zend_module_entry test_module_entry = {
    STANDARD_MODULE_HEADER, / / ​​# if ZEND_MODULE_API_NO> = 20010901
    "test", / / ​​name of the module
    test_functions, / / ​​specify exported functions
    NULL, / / ​​PHP_MINIT (test), Module Initialization
    NULL, / / ​​PHP_MSHUTDOWN (test), Module Shutdown
    NULL, / / ​​PHP_RINIT (test), Request Initialization
    NULL, / / ​​PHP_RSHUTDOWN (test), Request Shutdown
    NULL, / / ​​PHP_MINFO (test), Module Info ( for phpinfo ())
    "0.1" , / / version of our module
    STANDARD_MODULE_PROPERTIES
} ;
ZEND_GET_MODULE (test)
PHP_FUNCTION (test)
{
zval * parameter;
if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC, "z", & parameter) == FAILURE)
return;

/ * Check for parameter being passed by reference * /
if (! PZVAL_IS_REF (parameter))
{
zend_error (E_WARNING, "Parameter wasn't passed by reference");
RETURN_NULL ();
}
/ * Make changes to the parameter * /
ZVAL_LONG (parameter, 123) ;
}

在此目录中引起:

phpize

/配置

制作

制作安装

它运行良好。。。。

但是。。。在那里我需要使用一个外部静态库swl.a如何连接字段LIBS=-lswl.a这不起作用。谢谢

我做到了!

需要在config.m4:中添加此字符串

PHP_SUBST(TEST_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(swl, "/home/oleg/PROJECTS/QT/lib_swl", TEST_SHARED_LIBADD)

在这里,我们添加了静态库swl.a

什么。。。

最新更新