首先這是一個漫長的過程,嘗試編譯此插件的用戶一定要有耐心。大致流程可以劃分為:
做網(wǎng)站、網(wǎng)站設計,成都做網(wǎng)站公司-創(chuàng)新互聯(lián)已向上千企業(yè)提供了,網(wǎng)站設計,網(wǎng)站制作,網(wǎng)絡營銷等服務!設計與技術結(jié)合,多年網(wǎng)站推廣經(jīng)驗,合理的價格為您打造企業(yè)品質(zhì)網(wǎng)站。編譯ImageMagick
編譯MagickWand
關于PHP的版本。Windows的PHP是用哪個版本的VC編譯的,這個一定要先弄清楚,例如我的是VC9編譯的,那么一定要下載對應的VC來編譯。例如VC9對應VS2008,VC10對應VS2010。
下面切入正題:
首先下載PHP的源代碼,注意你下載的源代碼也要跟你Windows上的PHP可執(zhí)行文件是同一個版本。例如我的是5.4.31RC1。
下載ImageMagick的源代碼,我寫這篇文章的時候最新版是ImageMagick-6.8.9
下載MagickWandforPHP的源代碼,我寫這篇文章的時候最新版是MagickWandForPHP-1.0.9-2.zip
(注:以上源代碼建議都從官方下載,并且如果有對應的windows版本的,都下載windows版本的。如果沒有明顯標記windows版本的,那么.zip格式的壓縮包通常就默認是windows版本的源代碼。)
首先編譯 MagickWand
MagickWand的源代碼目錄下有一個叫做VisualMagick的目錄,這里面存放了VS的工程文件。雙擊,升級到你所用的VS版本的解決方案,然后打開。
第一次編譯,難免會遇到錯誤,如果最后編譯有5個或者5個以上的項目失敗了,那就一定要檢查,然后修改錯誤以后重新編譯。
我第一次編譯的時候有5個項目沒有編譯成功,導致一些CORE開頭的lib文件沒能生成。正確的情況下, 應該是每一個子工程都有一個lib文件和對應的dll文件生成的。其中CORE開頭的工程尤為重要。如果最后有一個IM_MOD開頭的工程沒有成功,那可能對后面的影響不大,可以忽略。
一般來收,工程文件沒有編譯成功,可能是互相關聯(lián)的,例如工程A的編譯,可能需要工程B的編譯出來的lib文件作為支持。我第一次編譯的時候,失敗原因最后發(fā)現(xiàn)是其中一個和多語言功能有關的模塊的源文件,里面有各國語言文字,但是這個源文件編碼是不帶BOM的UTF8,根據(jù)微軟官方的解釋,在VS里面使用這種UTF8的錯誤是不可預知的,用MadEdit加上了BOM,問題解決,最后只剩下一個MOD工程沒有編譯成功,可以忽略了。
然后編譯MagickWand
首先新建一個解決方案,選擇win32的dll工程(空項目),然后導入MagickWand下的對應的c文件和h文件。
加入對應的包含文件目錄:
PHP源碼所在目錄
PHP源碼所在目錄下的Zend目錄
PHP源碼所在目錄下的main目錄
PHP源碼所在目錄下的TSRM目錄
ImageMagick源碼所在目錄
ImageMagick源碼所在目錄下的magick目錄
加入對應的庫文件目錄:
PHP可執(zhí)行文件所在目錄
PHP可執(zhí)行文件所在目錄下的extras目錄
PHP可執(zhí)行文件所在目錄下的dev目錄
ImageMagick源碼所在目錄下的VisualMagick\Lib目錄
進入工程文件的屬性,展開 C/C++ > 預處理器 欄目,在預處理器定義中加入如下內(nèi)容:
ZEND_DEBUG=0
WIN32
NDEBUG
_WINDOWS
_USRDLL
MAGICKWAND_EXPORTS
COMPILE_DL_MAGICKWAND
ZEND_WIN32
PHP_WIN32
HAVE_MAGICKWAND=1
LIBZEND_EXPORTS
進入 連接器 > 輸入 欄目,在附加依賴項中加入如下內(nèi)容:
odbc32.lib
odbccp32.lib
php5embed.lib
CORE_RL_wand_.lib
CORE_RL_zlib_.lib
CORE_RL_webp_.lib
CORE_RL_ttf_.lib
CORE_RL_tiff_.lib
CORE_RL_png_.lib
CORE_RL_pixman_.lib
CORE_RL_openjpeg_.lib
CORE_RL_Magick++_.lib
CORE_RL_magick_.lib
CORE_RL_lqr_.lib
CORE_RL_libxml_.lib
CORE_RL_lcms_.lib
CORE_RL_jpeg_.lib
CORE_RL_jp2_.lib
CORE_RL_jbig_.lib
CORE_RL_glib_.lib
CORE_RL_ffi_.lib
CORE_RL_croco_.lib
CORE_RL_cairo_.lib
CORE_RL_bzlib_.lib.
CORE_RL_librsvg_.lib
此時就可以開始生成解決方案了,中間肯定會遇上錯誤,大概是C++的一個編譯器的斷點,找到對應源代碼注釋掉。(MagickWand for Windows萬年不更新代碼了,只有根據(jù)錯誤去一個個調(diào)整,如果遇上其他錯誤,解決方案也類似)
最后生成的dll文件就是標注PHP的擴展文件了,如何使用不再贅述。最后有幾點要說明的:
首先是這個方法默認都是動態(tài)鏈接,所以最后可能需要在我們的環(huán)境變量中加入ImageMagick源碼所在目錄下的VisualMagick\Bin目錄,也就是ImageMagick編譯出來的那些Dll所在的目錄,才能正確加載這個PHP擴展,當然用戶在編譯的時候也可以選擇全靜態(tài)連接。
其次是,下載的PHP源碼里,很有可能有一處宏定義:#define PHP_COMPILER_ID "VC9",如果遇上了這種情況,改成你自己的編譯器版本即可,否則最后加載的時候可能會提示版本無法對接。
最后,一定要用NTS,也就是非線程安全編譯,一般來說Windows的PHP一定要用非線程安全版本。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)站題目:Windows上編譯PHP的MagickWand擴展-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://jinyejixie.com/article16/isedg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、定制開發(fā)、網(wǎng)站維護、自適應網(wǎng)站、做網(wǎng)站、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容