<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # windows編譯php擴展 在vs2017下編譯php7.2.x擴展 - 工具 vs2017只需要安裝VC++環境即可,大概占用空間8G,不要隨便減少組件,否則有可能編譯不過; - 下載[php-sdk最新版2.2.6](https://github.com/Microsoft/php-sdk-binary-tools),下載[源碼php7.2.20](https://windows.php.net/downloads/releases/)`php-7.2.20-src.zip`和二進制`php-7.2.20-nts-Win32-VC15-x64.zip`,二進制是在zephir中使用的,下載[desp](https://windows.php.net/downloads/php-sdk/deps/),里面的`vc15/x64/全部文件`,用命令非常慢,全部下載下來; - 安裝zephir,用來,開發php擴展,原生c語言太難了,zephir開發很容易;配置環境變量 下載<https://github.com/phalcon/zephir>放到`D:\php-sdk\zephir`,然后執行`composer update`更新; 下載<https://github.com/phalcon/php-zephir-parser/releases>php-zephir-parser擴展,選擇正確的版本,我選擇`zephir_parser_x64_vc15_php7.2-nts_1.3.1-481.zip`,配置到`D:\php-sdk\php`里面ext目錄,在php.ini里面加入即可 ``` <pre class="calibre14">``` D<span class="token2">:</span>\php<span class="token">-</span>sdk\php <span class="token6">//php二進制文件路徑</span> D<span class="token2">:</span>\php<span class="token">-</span>sdk\zephir\bin <span class="token6">//zephir開發環境路徑</span> D<span class="token2">:</span>\php<span class="token">-</span>sdk\zephir\vendor\bin ``` ``` - 解壓phpsdk到`D:\php-sdk`;運行`phpsdk-vc15-x64.bat`,變成$;`phpsdk\_buildtree phpdev`,生成`phpdev/vc15/x64`目錄,在`phpdev/vc15/x64`目錄下新建php-src文件夾,將PHP源碼復制到此目錄, 切換到php-src目錄(cd php-src), ``` <pre class="calibre14">``` cd D<span class="token2">:</span>\php<span class="token">-</span>sdk\phpdev\vc15\x64\php<span class="token">-</span>src ``` ``` 執行`phpsdk\_deps -u`來更新deps,這個很慢用直接下載了放到x64/deps/下面;然后建立`x64/pecl`目錄,我們開發的所有擴展放到此處編譯;編譯命令 ``` <pre class="calibre14">``` buildconf configure <span class="token">--</span>disable<span class="token">-</span>zts <span class="token">--</span>enable<span class="token">-</span>cli <span class="token">--</span>enable<span class="token">-</span>zlib <span class="token">--</span>enable<span class="token">-</span>hash <span class="token">--</span>enable<span class="token">-</span>session <span class="token">--</span>without<span class="token">-</span>gd <span class="token">--</span>with<span class="token">-</span>bz2 <span class="token">--</span>enable<span class="token">-</span>demo<span class="token">=</span>shared <span class="token">--</span>enable<span class="token">-</span>fd<span class="token">-</span>setsize<span class="token">=</span><span class="token3">2048</span> <span class="token">--</span>enable<span class="token">-</span>sanitizer nmake ``` ``` 然后就編譯成功了; 在`D:\php-sdk\phpdev\vc15\x64\php-src\x64\Release`可以找到你要的擴展php\_擴展.dll,這是NTS版本 `D:\php-sdk\phpdev\vc15\x64\php-src\x64\Release_TS`下面是線程安全TS版本,編譯用`--disable-all` - 生成擴展`php_擴展.dll`,在php.ini添加`extension=擴展名`,重啟php即可; - 生成php7的dll模板 進入 `D:\php-sdk\phpdev\vc15\x64\php-src\ext`文件夾 執行`PHP ext_skel_win32.php --extname=demo`生成模塊文件夾demo 在demo.c中查找PHP\_FUNCTION函數下添加 ``` <pre class="calibre14">``` <span class="token1">PHP_FUNCTION</span><span class="token2">(</span>demo<span class="token2">)</span> <span class="token2">{</span> <span class="token1">php_printf</span><span class="token2">(</span><span class="token4">"Hello C extension中國"</span><span class="token2">)</span><span class="token2">;</span> <span class="token2">}</span> ``` ``` 修改 ``` <pre class="calibre14">``` const zend_function_entry demo_functions<span class="token2">[</span><span class="token2">]</span> <span class="token">=</span> <span class="token2">{</span> <span class="token1">PHP_FE</span><span class="token2">(</span>confirm_demo_compiled<span class="token2">,</span> NULL<span class="token2">)</span> <span class="token1">PHP_FE</span><span class="token2">(</span>demo<span class="token2">,</span> NULL<span class="token2">)</span> <span class="token6">//這里加一行代碼</span> PHP_FE_END <span class="token2">}</span><span class="token2">;</span> ``` ``` 在D:\\php-sdk\\phpdev\\vc15\\x64\\php-src\\main\\文件夾里的config.w32.h加`#define PHP_COMPILER_ID "VC15"` 打開vs2017新建-從現有代碼創建-項目名稱demo 選擇動態鏈接庫,然后切換一下解決方案為release,x64 右鍵配置屬性C/C++,附加包含目錄 ``` <pre class="calibre14">``` D<span class="token2">:</span>\php<span class="token">-</span>sdk\phpdev\vc15\x64\php<span class="token">-</span>src D<span class="token2">:</span>\php<span class="token">-</span>sdk\phpdev\vc15\x64\php<span class="token">-</span>src\TSRM D<span class="token2">:</span>\php<span class="token">-</span>sdk\phpdev\vc15\x64\php<span class="token">-</span>src\main D<span class="token2">:</span>\php<span class="token">-</span>sdk\phpdev\vc15\x64\php<span class="token">-</span>src\Zend ``` ``` C/C++預處理器 ``` <pre class="calibre14">``` ZEND_DEBUG<span class="token">=</span><span class="token3">0</span> PHP_EXTENSION PHP_WIN32 ZEND_WIN32 HAVE_EXT_CPP<span class="token">=</span><span class="token3">1</span> COMPILE_DL_EXT_CPP ZEND_WIN32_KEEP_INLINE ZTS #不添加就是關閉安全<span class="token2">,</span>一般不加 ``` ``` \\win32\\build\\文件夾里找到“[config.w32.h.in](http://config.w32.h.in)”,將這個文件復制到E:\\php7\\main\\文件夾里,去掉后面的“.in” 右鍵項目屬性,連接器,輸入,附加依賴項,編輯,將php7.lib的路徑放進去(這個文件在php編譯后的程序文件夾里,根目錄的dev文件夾里路徑`D:\php-sdk\php\dev\php7.lib` 編譯生成的是NTS版本 在x64\\Release\\下面有ext\_cpp.dll 需要改名字php\_ext\_cpp.dll,所有模塊在前面加上php\_然后在php.ini配置寫上extension=cpp\_ext
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看