首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP的C++扩展

PHP的C++扩展
EN

Stack Overflow用户
提问于 2013-11-27 09:38:37
回答 1查看 115关注 0票数 1

我需要为PHP (Debian)编写C++扩展,

1.创建文件config.m4:

代码语言:javascript
复制
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的文本

代码语言:javascript
复制
# 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 ,如何连接它呢?字段LIBS =-lswl.a --这是行不通的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-11-28 10:55:52

我做到了!

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

代码语言:javascript
复制
PHP_SUBST(TEST_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(swl, "/home/oleg/PROJECTS/QT/lib_swl", TEST_SHARED_LIBADD)

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

什么都是..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20238711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档