无法使PHP与C ++一起工作

时间:2013-10-07 22:12:44

标签: php c++ class php-extension

我有一个现有的C ++库,里面有一个类,我希望与PHP接口。我尝试通过这里的简单示例:http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/,我遇到运行./configure的语法错误。

我的代码如下所示:

[config.m4]
PHP_ARG_ENABLE(sigx,
    [Whether to enable the "SIGX" extension],
    [ --enable-sigx     Enable "SIGX" extension support])

if test "$PHP_SIGX" != "no"; then
    PHP_REQUIRE_CXX();
    PHP_SUBST(SIGX_SHARED_LIBADD)
    PHP_ADD_LIBRARY(stdc++, 1, SIGX_SHARED_LIBADD)
    PHP_NEW_EXTENSION(sigx, sigx.cc, $ext_shared)
fi

[sigx.h]
#ifndef PHP_SIGX_H
#define PHP_SIGX_H

#define PHP_SIGX_EXTNAME  "sigx"
#define PHP_SIGX_EXTVER   "0.1"

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

extern "C" {
#include "php.h"
}

extern zend_module_entry sigx_module_entry;
#define phpext_sigx_ptr &sigx_module_entry;

#endif /* PHP_SIGX_H */

[sigx.cc]
#include "php_sigx.h"

PHP_MINIT_FUNCTION(sigx)
{
    return SUCCESS;
}

zend_module_entry sigx_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
    STANDARD_MODULE_HEADER,
#endif
    PHP_SIGX_EXTNAME,
    NULL,                       // Functions
    PHP_MINIT(sigx),
    NULL,                       // MSHUTDOWN
    NULL,                       // RINIT
    NULL,                       // RSHUTDOWN
    NULL,                       // MINFO
#if ZEND_MODULE_API_NO >= 200010901
    PHP_SIGX_EXTVER,
#endif
    STANDARD_MODULE_PROPERTIES
};

#ifdef COMPILE_DL_SIGX
    extern "C" {
ZEND_GET_MODULE(sigx)
}
#endif

$ phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

$ ./configure
...
...
checking for re2c version... 0.13.5 (ok)
checking for gawk... gawk
checking Whether to enable the "SIGX" extension... yes, shared
./configure: line 4785: syntax error near unexpected token `;'
./configure: line 4785: `;'


ac_compiler_gnu=$ac_cv_c_compiler_gnu

    php_cxx_done=yes
  fi
;    <----  This is line 4785

  PHP_VAR_SUBST="$PHP_VAR_SUBST SIGX_SHARED_LIBADD"

我不知道为什么会这样,并且非常感谢这里的任何帮助。

0 个答案:

没有答案