VS2012編譯libzip庫(64位,Win7)

2021-06-27 11:01:37 字數 2826 閱讀 6062

突然有一天要在 windows 下解壓 zip。找啊找啊找到了 libzip 和兩篇參考文章,折騰了一天終於搞定了。記錄下過程。非常感謝原作者的鋪墊。

1. 安裝 cmake

一路 next ,除了下面這個地方。如圖選擇,以後用到 cmake 的時候就會方便很多吧。

2. 編譯 zlib

libzip 依賴 zlib,所以要先編乙個出來。(題外話:在 ubuntu 下面,./configure 和 make 就出來了,可惜不能給 windows 用)

2.1 建立專案檔案

啟動「vs2012 x86 本機工具命令提示」,cd 到 zlib 原始檔的目錄(如 d:\zlib-1.2.8)。mkdir build; cd build。然後就是關鍵的命令:

2.2 編譯專案

msbuild /p:configuration=release install.vcxproj,再次祈禱。順利的話直接出結果。

2.3 檢視結果

去指定的路徑看看吧。

3. 編譯 libzip

對比 ubuntu 的 ./configure 和 make 就能搞定,windows 的編譯過程也要一步步折騰。

3.1 

建立專案檔案

啟動「vs2012 x86 本機工具命令提示」,cd 到 zlib 原始檔的目錄(如 d:\libzip-0.11.2)。mkdir build; cd build。又到關鍵地方了:

3.2 編譯專案

msbuild /p:configuration=release install.vcxproj。祈禱祈禱。有 warning 先不管它。

3.5 檢視結果

去驗證一下。

檔案太多,就不截 tree 的圖了。可以再用 dumpbin 驗一下 lib :

好多好多資訊,眼花。只知道好多的 x64 意味著這是乙個64位的庫。

4. 呼叫

寫個程式驗證一下。

4.1 建立程式

新建乙個 console 專案,加入 zip 相關**。(請無視**邏輯,僅僅為了驗證庫能試用。)

#include "stdafx.h"

#include "zip.h"

int _tmain(int argc, _tchar* argv)

編輯區看到紅紅一片啊。別急,馬上搞定。

4.2 新增庫

右鍵專案名稱,新增,現有項,新增如下幾個檔案(建議拷貝到專案目錄下):

迫不及待編譯了是不是?遇到錯誤了有沒有?這個檔案不是存在嗎?為什麼還報錯?

雙擊錯誤,又看見了紅線了是嗎?把尖括號換成引號吧。

再編譯,怎麼還有錯?這次是鏈結問題。

這個問題曾經難倒我乙個晚上啊,左思右想沒有進展。把庫編了一遍又一遍。關機後突然想到乙個可能原因,第二天一試果然好使。有人想到了嗎?答案是 x86 vs x64!我們編譯的庫是64位的,而 console 專案預設編譯是 win32。趕緊改!啟動配置管理器,新建 x64 平台。

新建 x64 平台

這下看到成功的提示了嗎?

5. 領悟

探索是痛苦的,成功是開心的。可惜現實不會讓你在開心中沉浸太久。不說了,老闆又催進度了。

留下本文,為在痛苦中探索的程式猿提供一點點提示。萬一幫到誰了呢。沒準兒幾個月後我自己也會來 copy 命令的。多寫注釋,多留文件沒錯。

VS2012編譯WDM驅動

新版的vs2012中整合了wdk8,而且wdk8中已經沒有之前的build environment了,看來編譯驅動只能通過vs2012了,直接開發wdf驅動很方便直接選取相應的模板即可,若是編譯以前的wdm驅動,則需要做一下轉換,具體步驟如下 開啟vs2012,file open convert s...

mongodb C 驅動VS2012編譯

2 安裝boost庫 1.49版本 解壓後雙擊bootstrap.bat,生成bjam.exe後,cd到目錄c boost下,將boost 1 49更名為boost了 編譯boost。編譯命令 c boost bjam variant release with filesystem with thr...

vs2012編譯使用lua 5 2靜態庫

2.開啟vs2012新建空白工程test 3.在解決方案中新增新的lib工程 win32 選擇靜態lib 不要預編譯頭 lualib 4.配置lualib工程 a 將lua源 下的src檔案拷入lualib資料夾下,並在工程中匯入 b lualib工程屬性c c genaral additional...