1. 程式人生 > >使用zlib開源庫的uncompress函式解壓時出現記憶體崩潰問題及error LNK2026: 模組對於 SAFESEH 映像是不安全的問題

使用zlib開源庫的uncompress函式解壓時出現記憶體崩潰問題及error LNK2026: 模組對於 SAFESEH 映像是不安全的問題

         最近的專案中需要解壓縮,打算使用zlib開源庫在VS2013中開發,但是在使用uncompress函式進行解壓縮過程中遇到了記憶體崩潰現象,錯誤發生在inflate_fast裡面的彙編模組。經過分析發現是在編譯zlibwapi.dll的時候使用匯編模組造成的bug。

解決方法:用c編譯方式取代彙編方式,在zlib原始碼的zlibvc工程中

                  1、 工程屬性->前處理器,去掉 ASMINF 定義,這樣就可以遮蔽掉彙編模組了。

          但是編譯時會提示inflate_fast重複定義,因為在彙編檔案裡面這個函式已經被定義

 解決方法:開啟zlib-1.2.11\contrib\masmx86下面的彙編檔案inffas32.asm,將裡面_inflate_fast全部替換成其他任意函式名,再次編譯就可以解決問題。  

       最新zlib庫可以在官網http://www.zlib.net/上下載,但是下載下來的原始碼編譯後使用庫是有上述bug的,大家可以根據我的解決方案進行修改。

error LNK2026: 模組對於 SAFESEH 映像是不安全的問題?

解決辦法:

開啟工程專案的屬性->聯結器->命令列->將 /SAFESEH:NO 鍵入“附加選項”框中,然後點選應用。