欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

我是如何为yac做windows支持的

程序员文章站 2022-05-12 21:32:22
...

前几天 @laruence 说yac需要windows支持.. 依稀记得他1、2个月前就在喊.. 大门不忍看他日渐憔悴,于是就接了过来. 作为一个当代文艺青年..我已经有1年多的时间没有在windows上做过开发.. 也从来没有在windows上写过c(php扩展).. 一直以来都是在Linux上做的开

前几天 @laruence 说yac需要windows支持.. 依稀记得他1、2个月前就在喊.. 大门不忍看他日渐憔悴,于是就接了过来. 作为一个当代文艺青年..我已经有1年多的时间没有在windows上做过开发.. 也从来没有在windows上写过c(php扩展).. 一直以来都是在Linux上做的开发.. so..本篇文章就来说说windows下的扩展开发,从无到遇坑到测试通过遇到的一些应该注意的问题..如果下文要提到的一些东西能google到我就直接用链接代替了. Here we go. a> windows环境..我是开虚机来跑..具体环境配置见:链接,有几个需要注意的点。 你需要明白ZTS和NTS的意思,并且使用正确的方式来配置VS的环境变量和使用正确的包,比如我的环境是VS2008,我开发时候用NTS(非线程安全),所以我选择的是php-5.3.8-nts-Win32-VC9-x86这个包.. 记得设置PATH,会让你事半功倍。 b> vs2008的 项目 -> 属性 里面有几个需要调整的值 配置属性->常规 中的 MFC的使用 最好选择为 在静态库中使用MFC 配置属性->C/C++->预处理器->预处理定义 这里面的定义记得填,比如在yac中,我设置了如下几个: PHP_YAC_EXPORTS ZEND_DEBUG=0 COMPILE_DL_YAC ZEND_WIN32 PHP_WIN32 HAVE_TEST=1 各位需要按照自己的扩展情况做适当修改, 如果是ZTS记得在这里加上 配置属性->C/C++->代码生成->运行时库 这个需要改为 多线程DLL(/MD) 配置属性->C/C++->高级->编译为 这里需要修改为 编译为c代码(/TC) 配置属性->链接器->输入->附加依赖项 在yac中,我是如下设置的: "C:\php\php-5.3.25-nts-Win32-VC9-x86\dev\php5.lib" "Advapi32.lib" c>coding and coding .. 这里真的没什么说的.. 你至少需要写出一个可以0错误可以生成出来的dll.. 不然是没办法进入下一步的.. d>到了重点..调试,我当时怎么找都找不到如何在windows下调试php扩展,其实很简单,只是因为没有在windows下面开发c的经验,首先,我们需要把 [...]