Windows下写PHP的C扩展

8-阿里云服务器 ECS配置R及Studio Server 步骤概览:(首先要明确自己的系统然后进行安装) 阅读详情

安装好如下软件: 

引用

1. VC++ 6 
2. php二进制环境 
3. Cygwin. 


I. 下载php的源码包 
下载后php源码包解压后有个ext目录,这个目录就是负责开发扩展的目录,目录中有默认你扩展的所有源码。还有两个重要的文件:ext_skel , ext_skel_win32.php. 
ext_skel是创建扩展的shell,在windows上无法运行,所以就必须要有Cygwin。 

II. 建立php扩展骨架目录文件 
如果你的cygwin没有安装在c:/cygwin,进入php源码包/ext目录下,修改ext_skel_win32.php : 
  $cygwin_path = 'c:/cygwin/bin'; 
修改为你的cygwin目录 
  $cygwin_path = 'd:/cygwin/bin'; 

命令行方式进入ext目录然后运行: 
php ext_skel_win32.php –extname=myhello 
(当然,为了保证上面的命令行能正常运行,首先你得确保你的php目录在系统的环境变量里) 

运行该命令后,有人发现下面的错误 
引用
Warning: fopen(myhello/myhello.dsp): failed to open stream: No such file or directory in D:/cygwin/php-5.2.6/ext/ext_skel_win32.php on line 45 
Warning: fopen(myhello/myhello.php): failed to open stream: No such file or directory in D:/cygwin/php-5.2.6/ext/ext_skel_win32.php on line 52 
说明你的 cygwin 安装不完整。要是没报错你的myhello扩展就创建成功了。这就是一个简单的扩展框架,用纯c语言编写。 

III. 添加依赖的php5ts.lib 
  在php的二进制包中的 dev目录下将 php5ts.lib 拷到我们的myhello目录中, 否则编译将通不过。 

IV. 添加hello c代码 
生成的myhello目录中有关键文件包括 
  myhello.dsp, 
  myhello.c, 
  php_myhello.h, 
其他文件暂时不必关心. 

提示:切忌myhello目录不可以挪移出ext目录,否则会编译报缺少php.h. 

1. 修改php_myhello.h 
扩展的新函数: 在PHP_FUNCTION(confirm_myhello_compiled); 行后添加一行 
C代码 
  1. PHP_FUNCTION(confirm_myhello_compiled);  
  2. PHP_FUNCTION(myhello);  // 新增的行  


2. 修改myhello.c 
在PHP_FUNCTION(confirm_myhello_compiled) 后添加我们的新函数 
C代码 
  1. PHP_FUNCTION(myhello){  
  2.     php_printf(”Hello C extension”);  
  3. }  

在数组zend_function_entry myhello_functions[]增加一行 
C代码 
  1. zend_function_entry myhello_functions[] = {  
  2.     PHP_FE(confirm_myhello_compiled,    NULL)        /* For testing, remove later. */  
  3.     PHP_FE(myhello, NULL) // 新增的行  
  4.     {NULL, NULL, NULL}    /* Must be the last line in myhello_functions[] */  
  5. };  


V. 构建DLL文件 
用vc6打开我们的工程,就是myhello.dsp 
1. 修改编译方式为release: 选择Build->Set Active Configuration设置默认编译方式为Release, 否则会提示缺少php5ts_debug.lib ,其实就是php5ts.lib。 
2. 按F5编译。会在ext上级的Release_TS目录下生成php_myhello.dll 

提示:如果愿意使用命令行编译也是可以的,命令如下: 
引用

msdev myhello/myhello.dsp /MAKE "myhello - Win32 Release_TS" 


VI. 集成dll到php中。 
1. 把我们生成的 php_myhello.dll放到二进制php环境的ext目录下. 
2. 然后修改php.ini, 添加 extension=php_myhello.dll 重启apahce。 
3. 新建c_test.php 内容为 
Java代码 
  1. <?php myhello(); ?>   

在浏览器里打开会看到页面: 
引用
hello C extension. 
New API 大模型网关保姆级教程:Docker Compose 部署 + MiniMax 接入 Claude 实战 New API 是一个开源的 AI 基座平台,提供统一的 API 接口接入 30+主流 AI 服务(如 OpenAI、Claude 等)。核心功能包括智能路由、精细计费、安全管控和多租户支持,采用 AGPLv3 协议开源。支持 Docker Compose 快速部署,通过修改配置文件即可连接不同数据库,适合从开发到生产环境的不同规模应用。部署时需注意修改默认密码等安全配置。 阅读详情

相关推荐

设计空间探索:乘法器设计的面积、延时、功耗优化

4-2压缩器在减少延迟方面表现出色,适用于需要快速压缩的场景。6-2压缩器在资源占用方面具有优势,能够减少压缩树的层次数量和逻辑门数量。优化功耗:通过合理组合不同类型的压缩器,可以在延迟、资源占用和功耗之间找到最佳平衡点,从而实现优化的设计目标。###参考资料。

SiArch的博客 1879

windows下PHP扩展

1 简介 PHP 尽管提供了大量有用的函数,但是在特殊情况下还可能需要进行扩展编程,比如大量的 PECL(PHP Extension CommunityLibrary)就是以扩展的形式提供的(动态链接库dll文件),它们比 PEAR 的运行效率要高很多。 PHP 扩展是用 C 或 C++ 编写的,需要编译成动态连接库 dll 文件后在 PHP 环境下注册后才能使用。 编写 PHP 扩展的软件

飓风 1242

AD620仪表放大器模组实战:从调零到信号放大的完整指南

本文详细介绍了AD620仪表放大器模组的实战应用,从调零到信号放大的完整指南。AD620模组以其专业级性能和易用性成为微弱信号放大的首选,集成了AD620芯片、LM358运放和7660电源转换芯片。文章提供了调零技巧、增益设置方法以及单端与差分输入的正确连接方案,并通过心电信号采集和称重传感器等实际案例展示了其广泛应用。

weixin_29290379的博客 376

Windows下php扩展开发c++动态库

PHP扩展开发,从零了解到初步完成一个小项目,经过三天的仔细研究,现整理如下 一、需求介绍 PHP扩展开发,调用自己之前的c++动态库,完成功能 二、项目之前 系统:windows xp  开发工具:vs 2008 web环境:apache2.4  PHP5.3.29-VC9-ts-x86 aphach和PHP 环境之前已经搭建完成 PHP源码:去官网http://www.php.n

超超吵吵的专栏 5615

手把手教你用6轴IMU跑通LIO-SAM:参数配置与代码修改保姆级教程

本文提供了一套完整的6轴IMU适配LIO-SAM的解决方案,包括参数配置与代码修改的详细步骤。从理解6轴与9轴IMU的关键差异入手,逐步指导如何调整核心配置文件params.yaml、重构utility.h关键函数、优化mapOptimization.cpp的位姿融合逻辑,并给出编译验证与性能调优建议,帮助开发者快速实现6轴IMU在LIO-SAM中的稳定运行。

weixin_28717807的博客 357

期货缠论实战:文华财经笔中枢指标公式解析与博易大师应用指南

本文深入解析期货缠论实战中的文华财经笔中枢指标公式及其在博易大师平台的应用技巧。详细介绍了笔中枢指标的核心逻辑、公式拆解、参数设置及多周期联合作战策略,帮助交易者提升市场分析能力与交易胜率。特别适合期货交易者学习缠论指标的实际应用。

weixin_42522552的博客 357

Windows中搭建PHP扩展开发环境

一、提前准备 下载并安装VS2008 下载PHP5.4.5程序: NTS下载 TS下载 其中php二进制包分为VC6、VC8、VC9及TS和NTS版本。 VC6、VC8、VC9分别对应VC6、VC2005、VC2008 TS表示(Thread Safe),当以ISAPI(IIS SERVER)允许时,因为是单进程中执行多线程,为避免内存泄漏和共享变量安全,建议使用TS版本。 当

God's blog 2万+

组态王|以一定的时间间隔查询某个时间段内的历史数据

使用该函数其他都可以满足,唯一问题是变量的选择,当切换站点后查询历史数据时,所选的变量依然是上次站点查询时所选择的变量,每当更换站点查询时都需要重新选择变量,这一点太繁琐,是用户和操作者无法忍受的。但是由于现场可能数据变化并非太过频繁,想要实现记录频率不变,还是以1分钟一次的频率进行存储,但是报表查询的时候想要只显示整点的数据。其中日历控件的设置与之前的历史数据查询是一样的,报表的抬头设置都是不用变的,此处不再赘述,有兴趣的可以。以上为组态王中以一定的时间间隔查询某个时间段内的历史数据的实现过程。

做有价值的事,积累有价值的笔记! 2544

php5.2 vc6,Windows环境vc6编写php5扩展

环境:Windows xp Visual C++6.0 PHP5.2.6 cygwin下载php的源码包,解压后有个ext目录,这个目录就是负责开发扩展的目录,目录中有默认你扩展的所有源码。能好好学些学习。还有个ext_skel 和ext_skel_win32.php 头一个是创建 扩展的shell在windows上无法运行,所以就必须要有Cygwin。修改ext目录下的 ext_s...

weixin_34189259的博客 161

从零搭建风电场:手把手教你用WAsP+WindPRO完成风资源评估全流程

本文详细介绍了从零开始搭建风电场的全流程,重点讲解如何使用WAsP和WindPRO进行风资源评估和风场布局优化。内容包括软件配置、数据采集规范、风图谱建模实战、机组选型策略以及常见问题解决方案,帮助工程师掌握风电开发的核心技术,提升项目成功率。

year5的博客 371

从零手搓大模型(一)文本如何变成 LLM 的输入

本文介绍了从原始文本到LLM输入向量的完整处理流程。主要内容包括: 文本预处理:通过正则表达式将原始文本分割成token列表,处理标点和空格。 词表构建:创建token到ID的映射字典(vocabulary),这是文本数字化的关键步骤。 简单tokenizer实现:封装了编码(encode)和解码(decode)功能,完成文本与token ID的相互转换。 处理流程:原始文本 → 分词 → token ID → 嵌入表示 → 最终输入向量。 数据形状变化:从字符串逐步转换为(batch_size, cont

echo的博客 998

php的error_log使用

apache+php 遇到php5ts.dll错误 这两天安装apache+php时遇到php5ts.dll错误问题。经过几天折腾,终于找到原因。一、平台操作系统:windows 2003;Apache:2.2.17.0,使用httpd-2.2.17-win32-x86-openssl-0.9.8o.msi安装包;PHP:5.3.5.0,采用apache模块方式,使用php-5.3.5-Wi...

weixin_34409357的博客 218

【华为OD机试真题E卷】514、学生方阵 | 机试真题+思路参考+代码分析(E卷复用)(C++、Java、Py)

【华为OD机试真题E卷】514、学生方阵 | 机试真题+思路参考+代码分析(E卷复用)(C++、Java、Py) 题目描述 学校组织活动,将学生排成一个矩形方阵 请在矩形方阵中找到最大的位置相连的男生数量 这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的 注:学生个数不会超过10000

KJ.JK 2492

c写成php的扩展_在Windows下写PHP的C扩展

去http://php.net/releases/下载5.4的Windows 5.4.34 binaries二进制包和PHP 5.4.34 (tar.gz)源码包。设置VC6和php命令的path环境变量。PATH值为C:\Program Files\Microsoft Visual Studio\COMMON\MSDev98\Bin;C:\wamp\bin\php\php5.4.35;将源码包解...

weixin_42636454的博客 191

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

在Windows下写PHP的C扩展

//原文地址:http://koda.iteye.com/blog/315779 安装好如下软件:  引用 1. VC++ 6  2. php二进制环境  3. Cygwin.  I. 下载php的源码包  下载后php源码包解压后有个ext目录,这个目录就是负责开发扩展的目录,目录中有默认你扩展的所有源码。还有两个重要的文件:ext_skel , ext_s

倦鸟归时 1501

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

windos php c 扩展,Windows下写PHP的C扩展 | 学步园

安装好如下软件:引用1. VC++ 62. php二进制环境3. Cygwin.I. 下载php的源码包下载后php源码包解压后有个ext目录,这个目录就是负责开发扩展的目录,目录中有默认你扩展的所有源码。还有两个重要的文件:ext_skel , ext_skel_win32.php.ext_skel是创建扩展的shell,在windows上无法运行,所以就必须要有Cygwin。II. 建立php...

weixin_33794626的博客 171

windows 系统 C语言写PHP简单扩展

PHP是纯C语言写出来的,其实也可以理解为PHP是C语言的接口,我使用PHP就是使用了C语言的接口,我们完全可以用C写PHP的扩展,准备工作,PHP分为VC6/VC9/VC11,高版本的C语言需要VC2008,但是VC2008太大我不想去安装,于是就选择了VC6,这么的话PHP只能选择5.3版本的,下面开始工作准备: 1.下载PHP源码和其他工具,我已经上传好了下载链接http://downlo

咖啡如同生活的专栏 1939

windows下用c写php扩展(转)

windows下用c写php扩展(加密解密php源代码) 首先用hello world试手一下。下载php源码包,ext目录就是扩展目录了,里面有2个重要的文件是ext_skel以及ext_skel_win32.php。下载cygwin,有了这个就可以方便的在windows下创建php扩展了。下载中……下载完后用php ext_skel_win32.php --extname=hello来编译生...

听雨轩 302

c写成php的扩展_如何用C语言写PHP7扩展DLL文件——windows篇

本文分享关于如何使用C语言来编写PHP的扩展,PHP作为一门开源语言在社区中有很多热爱开源开发的爱好者,PHP之所以强大在web领域一直屹立不倒其中主要原因之一就是因为PHP拥有非常多并且强大的扩展,除了官方自己提供的扩展以外还有更多开源大牛的加入,例如韩天峰的swoole,鸟哥的yaf,yar等等,废话不多说具体步骤如下。第一步去官方下载PHP源码文件并且解压到电脑某个文件夹中,并且在根目录文件...

weixin_32769015的博客 339

windows下用c写php扩展(加密解密php源代码)

首先用hello world试手一下。 下载php源码包,ext目录就是扩展目录了里面有2个重要的文件是ext_skel以及ext_skel_win32.php. 下载cygwin.有了这个就可以方便的在windows下创建php扩展了。 下载中。。。 下载完后用php ext_skel_win32.php --extname=hello来编译生成我们的扩展开发目录hello 然后开始写...

听雨轩 300
上一篇: 利用php调用C语言 扩展函数
下一篇: wamp php 5.3.0 升级5.3.3
hn3e21
博客等级 码龄17年 9粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值