0

0

windows下用c/c++开发php扩展

php中文网

php中文网

发布时间:2016-08-08 09:29:04

|

1455人浏览过

|

来源于php中文网

原创

一:所需工具:

cygwin ,它是一个在windows平台上运行的类unix模拟环境
php源码(压缩包)
php二进制文件,也就是安装在windows上的php
vs2008 或者更高(vs2010,vs2013)
win32build.rar和bindlib_win32.rar(主要用来生成config.win32.h)

二:配置过程

1: 解压PHP源码,里面有一个ext目录,这里便是负责开发PHP扩展的目录,目录中有默认的所有扩展源码,还有两个文件,
ext_skel_win32.php 和 ext_skel文件
ext_skel是创建扩展的shell,在windows上无法运行,所以必须要有cygwin模拟unix环境

2:解压完之后,我们需要在ext目录中生成我们自己的扩展目录.
我们直接win+r cmd 进入命令行,然后cd 跳转到ext目录,输入以下指令:
php ext_skel_win32.php –extname=myext 或者
php.exe ext_skel_win32.php –extname=myext

这里很容易出现错误
首先:php和php.exe指的是安装在windows上的php,它的根目录里面有php.exe,目的是用来解析php文件,所以我们需要将安装的php目录设置到环境变量中。
其次:如果没有安装cygwin或者没有设置cygwin,就会出现以下错误。所以 ,我们需要安装cygwin,然后打开php源码ext目录中的ext_skel_win32.php ,里面有一个变量叫$cygwin_path = “c:/cygwin/bin”; 将它修改为你安装的目录并保存,try again

如果依旧报错,请看这张图,你是否犯错了。

立即学习PHP免费学习笔记(深入)”;

一切完成之后 如果出现以下情况,则表明创建扩展目录(骨架)成功,

里面包含的目录大概是这个样子,其中我们需要修改的两个文件是(如箭头所示)

3:添加依赖的php5ts.lib
将php二进制包中的dev目录下的php5ts.lib拷贝到你的扩展目录中

4:(1)修改php_hello.h文件
扩展新的函数:在PHP_FUNCTION(confirm_myhello_compiled);行后添加一行 PHP_FUNCTION(hello);
(2)修改hello.c 文件
在数组zend_function_entry myhello_functions[]增加一行

1. zend_function_entry myhello_functions[] = {  
2.     PHP_FE(confirm_myhello_compiled,    NULL)        /* For testing, remove later. */  
3.     PHP_FE(hello, NULL) // 新增的行  
4.     {NULL, NULL, NULL}    /* Must be the last line in myhello_functions[] */  
5. };  

在PHP_FUNCTION(confirm_myhello_compiled) 后添加我们的新函数

1. PHP_FUNCTION(hello){  
2.     php_printf(”Hello C extension”);  
3. }  
4. 

5:构建dll扩展文件
接下来就是编译扩展文件了,用vs2008打开hello.dsp,选择编译方式为Release_TS,然后开始编译,或者在通过命令行进入ext/hello 执行 msdev hello.dsp /MAKE “hello - Win32 Release_TS” 如果成功,则会在ext同级目录Release_TS中生成php_hello.dll。
到这里基本主要任务基本完成了,但是这里也是最容易出错误的。
最常见的错误 ,编译时它会出现Cannot open include file “../main/config.win32.h” 结果到main文件夹根本就没这个文件。
所以,将win32build.rar和bindlib_win32.rar都解压到php源码中win32/build目录下,并将win32/build添加到环境变量
进入cmd 跳转到php源码目录,输入
cscript /nologo configure.js –with-php-build=”../win32build” –without-libxml –disable-odbc 回车后有可能出现

意思是没有找打cl.exe,所以我们需要将安装好的vs2008目录中的的bin目录添加到环境变量,我的机器上是”D:\vs2008\VC\bin”,再次执行,有可能依旧会报错,图我找不到了。。大概意思就是the c++ compiler is vc9.0(vs2008) at least 所以尽量使用vs2008以上的compiler

创想C2C多用户商城系统
创想C2C多用户商城系统

创想C2C商城系统,系统功能仿照淘宝设计,采用模块标签技术和静态html生成技术 基于Asp.Net/C#+SQL的开发的创想多用户商城系统,具有智能化、高扩展、稳定安全等特性,后台可自由添加频道,自由修改界面风格,商品无限级 分类,支持在线支付整合,通过安装和使用创想C2C商城系统,就可以轻松建立起专业大型的网上交易平台。创想C2C多用户商城系统5.6.3.8版本升级功能1.网站地区设置功能的增

下载

继续执行:

这个文件可以在Microsoft Visual Studio 10.0\Common7\IDE目录下找到,复制到VC\bin目录下即可。继续执行语句,成功。在D:\php源码\main目录下生成config.win32.h文件。

打开config.win32.h:找到里面

如果你用vc10进行编译,则需修改为

终于解决问题了,编译。。如果成功,生成dll,
但是我还是遇见了编译问题,fatal error c1902:程序数据库管理器不匹配。。
真是苦了,通过百度,在CSDN论坛上发现同样的问题,最后是这样解决的。
mspdbsrv.exe 或 mspdbcore.dll 丢失或者其版本和 mspdb80.dll 的版本不同,确定这三个文件的相同版本安装在系统里。
在VC安装目录下的\Common7\IDE 目录下拷贝这三个文件到 安装目录下的VC\bin下即可
所有问题解决,我也成功编译出了php_hello.dll

6:最后,我们将其拷贝到二进制php目录下的ext目录,打开php.ini,添加上 extension=php_hello.dll
重启apache,测试自己的函数。

PS:当时我测试的函数是cock()

输出结果:

到此结束。。。搞这个东西真是快疯了,还好耐心的解决问题多次尝试,最终成功。我将自己所遇到的问题都贴了出来方便大家参考。php扩展这东西挺好玩的,我们可以开发自己的php函数。不过前提是c/c++要学的很好。。。总之慢慢来吧,祝大家早日成功~

以上就介绍了windows下用c/c++开发php扩展,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号