php7 編譯 win32ps 模塊

碰到了不少問題 ,但最終都解決了,感受不錯。php

1)下載 php source, php sdk, 以及 win32ps的源代碼windows

2) 參照下面的鏈接進行編譯。php7

  https://wiki.php.net/internals/windows/stepbystepbuildui

   注意點:spa

       a) 設置phpsdk_setvars.bat環境變量以前,設置vc 的環境變量。         .net

  "D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64

       b) 文章介紹的目錄結構太深了,我這樣的結構也是沒有問題的。code

        SDK:D:\tool\php-sdkblog

        php source: D:\proj\php-srcget

        win32ps: D:\proj\pecl\win32ps-1.0.1it

      c) 加上 "=shared" 就能夠編譯 extension dll 了(要不就會直接靜態鏈接到php)

        configure --disable-all --enable-cli --enable-win32ps=shared

3) 源代碼的修改。

     a) MAKE_STD_ZVAL 被php7 廢除了。 因此,改爲相似下面的語句

    // MAKE_STD_ZVAL(tms);
    zval tms_instance;
    tms = &tms_instance;

     b) 運行時,加載extension 會出現 【PHP Startup: Invalid library maybe not a PHP library 】錯誤

         在win32ps.c 加上下面的代碼,從新編譯       

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#ifdef COMPILE_DL_WIN32PS
ZEND_GET_MODULE(win32ps)
#endif

        參考:http://stackoverflow.com/questions/7283949/php-warning-php-startup-invalid-library-maybe-not-a-php-library

 

以上。