我有一个现有的 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"
我不知道为什么会发生这种情况,并且非常感谢这里的任何帮助。