To fishchen(小瑜): 建议你看看http://bugs.tutorbuddy.com//phpcpp/phpcpp/这篇文章吧,况且偶也用C++写过好几个PHP扩展,最具代表性的就是http://www.phpsalon.com/ezsms/To 楼主: 还是仔细检查一遍吧,编译的加入\Tp选项试试看,若还不行,可以去VC++版块问一下,我能做的也就这么多了。
TO:phpteam() 我在VC->setting->c/c++->Project Option里加上/Tp,编译后出现 错误如下: fatal error C1083: Cannot open source file: '/Tp': No such file or directory
我来推荐一个网站吧
http://pecl.php.net/
有些资料,不过也很不丰满
PHP的源代码是ANSI C写的,并不是说就不能用C++开发PHP扩展。完全可以用C++写的,只不过跟C有一点点不同而已。To heylin :
1、文件扩展名由“.c”改为“.cpp”2、引入头文件部分需要加入一些代码,如下所示:
#ifdef __cplusplus
extern "C" {
#endif
...
...
#ifdef __cplusplus
}
#endif比如:引入php.h
C中只需#include "php.h"即可,而C++中要改为:
#ifdef __cplusplus
extern "C" {
#endif
#include "php.h"
#ifdef __cplusplus
}
#endif3、ZEND_GET_MODULE()部分也要加入,比如你的扩展名称为“yourext”
C代码:
#ifdef COMPILE_DL_YOUREXT
ZEND_GET_MODULE(yourext)
#endifC++代码:
#ifdef COMPILE_DL_YOUREXT
#ifdef __cplusplus
extern "C" {
#endif
ZEND_GET_MODULE(yourext)
#ifdef __cplusplus
}
#endif
#endif
1、文件扩展名由“.c”改为“.cpp”,编译是没有问题的.2、引入头文件部分需要加入一些代码,如下所示:
#ifdef __cplusplus
extern "C" {
#endif
#include <iostream>
#ifdef __cplusplus
}
#endif
还是出现一样的编译错误:VC98\INCLUDE\eh.h(32) : fatal error C1189: #error : "eh.h is only for C++!"
#ifdef __cplusplus
extern "C" {
#endif
#include "php.h"
#ifdef __cplusplus
}
#endif
而且c和c++的编译器对代码的编译方式并不一样, 编译后函数的地址并不一样,
所以会使得php引擎/解释器无法定位到函数的地址. so. 目前是无法使用c++来为php写扩展的, 确切地说, 是无法用c++的编译器来为php写扩展(即是是用c).但可能有一个变通的方法...就是在中间加一个c的过渡.但我没有去实现过, 有兴趣可以参考:
http://www.phpbuilder.com/lists/php3-list/199804/0009.phpBTW. 我并不了解VC. 以上是我在linux下的经验.
建议你看看http://bugs.tutorbuddy.com//phpcpp/phpcpp/这篇文章吧,况且偶也用C++写过好几个PHP扩展,最具代表性的就是http://www.phpsalon.com/ezsms/To 楼主:
还是仔细检查一遍吧,编译的加入\Tp选项试试看,若还不行,可以去VC++版块问一下,我能做的也就这么多了。
我在VC->setting->c/c++->Project Option里加上/Tp,编译后出现
错误如下:
fatal error C1083: Cannot open source file: '/Tp': No such file or directory