• VS2012编译php扩展


    注意:用VS2015来做会比较好!

    开发前准备工作:
    cygwin
    visual studio 2012
    php编译后的程序
          使用的是 xampp集成安装包,所以编译后的程序路径为D:xamppphp
    php编译前的源码
          使用的是 php-5.6.14-src,路径为D:HacfinCodePHPphp_sdk_winphp-5.6.14-src

    1、修改 “ext_skel_win32.php”文件
          D:HacfinCodePHPphp_sdk_winphp-5.6.14-srcextext_skel_win32.php,修改cygwin路径。
    $cygwin_path = 'c:cygwin64in'; 把$cygwin_path修改为你实际安装cygwin的路径。 

    2、生成PHP扩展开发框架
          在源代码ext目录也就是D:HacfinCodePHPphp_sdk_winphp-5.6.14-srcext下,运行cmd。执行php ext_skel_win32.php --extname=<EXT_NAME>,此时会在ext目录下生成<EXT_NAME>目录,这个目录就是进行PHP扩展开发的框架。比如你运行php.exe ext_skel_win32.php --extname=twig,会在ext目录下生成twig目录,这里的twig代表你的php扩展名。

    3、拷贝衔接库
          将D:xamppphpdevphp5ts.lib拷贝至 “ext/<EXT_NAME>”中。比如你要开发的PHP扩展名为twig,那么就需要把php5ts.lib拷贝到PHP源文件目录ext wig中。 
    注:如果php5ts.lib(如果是非线程安全版本那么名字是php5.lib)是64位的,那么VS2012的解决方案平台要设置为X64,不能设为win32。平台解决方案要和php核心库的位数保持一致。否则会出错、

    4、添加“config.w32.h”文件
          在php源代码文件目录里搜索“config.w32.h”,在D:HacfinCodePHPphp_sdk_winphp-5.6.14-srcwin32uild文件夹里找到“config.w32.h.in”,将这个文件复制到E:php-5.6.9-srcmain文件夹里,去掉后面的“.in”。

    注意:为了让扩展能和php运行环境严格匹配,要根据你的php运行环境的编译版本(php5.6.14是VC11编译的),在config.w32.h文件里加上:

    #define PHP_COMPILER_ID "VC11" 

    5、取消预定义宏“LIBZEND_EXPORTS”(否则不可引入zend函数)
    进入<EXT_NAME>目录,打开<EXT_NAME>.dsp。  

     

  • 相关阅读:
    Windows Server 2012 64bit RMAN异机不完全恢复(迁移)
    dbms_jobs vs. dbms_scheduler_jobs
    Migrating from dbms_job to dbms_scheduler
    ORA-12537: TNS:connection closed
    win7 ins 30131 oracle 12c
    Vector源码分析
    LinkedList源码分析
    ArrayList源码分析
    jsp 显示日期
    Spring data redis 使用 pipelined 批量操作
  • 原文地址:https://www.cnblogs.com/dongruiha/p/6902012.html
Copyright © 2020-2023  润新知