編譯和使用zlib
由於要弄一個專案,在windows下用到zlib庫,現成的庫都是release版本的,如果專案是debug的就會導致一大堆符號錯誤,無奈只得自己重新編譯zlib庫。
首先下載 原始碼和工程檔案
解壓到某個目錄
開啟VS2010 的命令列 32bit
進入到zlib-1.2.5\contrib\masmx86目錄
執行bld_ml32.bat
開啟工程專案zlib-1.2.5\contrib\vstudio\vc10\zlibvc.sln
編譯整個solution(包括 debug 和 Release)
此時已經得到了4個檔案 zlibwapi.dll zlibwapi.lib zlibwapid.dll zlibwapid.lib
其中 lib 檔案是連線期間用到的,dll檔案是執行時候用到的。還有兩個標頭檔案 zconf.h zlib.h
是在編譯期間用到。關於lib 和dll 關係和區別可見連結。
把得到的lib檔案放在VS工程目錄下,在 屬性 -> 聯結器 -> 輸入 -> 附加依賴項
一欄裡面把剛才得到的lib檔案加進去,注意末尾帶有 d 的表示debug版。
此時編譯,連結依然有錯:
error LNK2019: 無法解析的外部符號 _compress
在 VS 2010 下通過 dumpbin 命令檢視lib匯出函式 :
dumpbin /exports XXX.lib
可以看到 有compress 的匯出。
ordinal name
1 _adler32@12
140 _adler32_combine@12
39 _compress2@20
2 _compress@16
經過網上查詢,發現是要在vs2010的WIN32環境下加入 ZLIB_WINAPI的巨集定義才行:
#define ZLIB_WINAPI
#include "zconf.h"
注意這個巨集定義要加在 zconf.h 包含之前,如果載入了 zconf.h 之後也不行。
此時編譯一切順利。
相關文章
- zlib庫編譯過程遇到的問題及其使用zlib庫進行解壓縮編譯
- mingw下編譯zlib quazip動態庫編譯
- 編譯安裝pcre2-10.39 zlib-1.3.1 openssl-3.0.13編譯
- 使用 Nginx 編譯 Sass 和 ScssNginx編譯CSS
- 使用ilasm 和 ildasm編譯和反編譯工具對DLL檔案修改ASMLDA編譯
- IJKPlayer視訊直播-編譯和使用編譯
- Flink1.9.2原始碼編譯和使用原始碼編譯
- 使用Reflector和Filedisassembler逆向編譯反編譯.cs.dll檔案程式碼編譯
- 使用makefile編譯編譯
- 開源編譯工具和編譯軟體編譯
- ubuntu-22.04.4編譯升級安裝 OpenSSH_9.8p1+OpenSSL 3.3.2+zlib1.3.1Ubuntu編譯
- zlib
- 交叉編譯-Mac環境使用NDK編譯FFmpeg編譯Mac
- 編譯器的自展和自舉、交叉編譯編譯
- 交叉編譯和 RPC編譯RPC
- 使用Remix編譯和部署以太坊智慧合約REM編譯
- 編譯靜態庫的方式使用spdlog和fmt編譯
- 淺談彙編器、編譯器和直譯器編譯
- 使用zlib庫解壓zip檔案
- 在 Windows 中使用 WSL 編譯 Linux 和 U-BootWindows編譯Linuxboot
- Angular–AOT和JIT編譯Angular編譯
- keystone和beaengine的編譯編譯
- Go 編譯和工具鏈Go編譯
- 提前編譯:AOT-Native Image 和執行時編譯 JIT編譯
- Vue3原始碼分析——編譯模組和編譯器Vue原始碼編譯
- TDengine 3.0 中如何編譯、建立和使用自定義函式編譯函式
- 使用Live Reload在IntelliJ Idea和Chrome實時編譯部署和除錯IntelliJIdeaChrome編譯除錯
- gcc 和 g++ 的聯絡和區別,使用 gcc 編譯 c++GC編譯C++
- 使用 ccache 增加 Xcode 編譯速度XCode編譯
- Typora編譯器使用方法編譯
- dva使用yarn編譯出錯Yarn編譯
- C編譯: 使用gdb除錯編譯除錯
- Rust 編譯器探索使用 PGORust編譯Go
- TIR 的概念和編譯原理編譯原理
- Java 編譯期和執行期Java編譯
- 交叉編譯場景分析(arm-linux)(四)--編譯readline和ncurses編譯Linux
- Linux下nginx編譯安裝教程和編譯引數詳解LinuxNginx編譯
- Github配合Eclipse和JetBrains系編譯器的使用(基礎篇)GithubEclipseAI編譯
- windows下使用mingw和msvc靜態編譯Qt5.15.xxWindows編譯QT