1
我需要編寫PHP OS的Linux(Debian的)C++擴展,C++擴展PHP
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++程序test.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
./config中
使
使安裝
它運作良好....
但是... 有我需要使用一個外部靜態庫swl.a 我怎樣才能連接呢? Field LIBS = -lswl.a這不起作用。謝謝。