突然有一天要在 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 相關**。(請無視**邏輯,僅僅為了驗證庫能試用。)4.2 新增庫編輯區看到紅紅一片啊。別急,馬上搞定。#include "stdafx.h"
#include "zip.h"
int _tmain(int argc, _tchar* argv)
右鍵專案名稱,新增,現有項,新增如下幾個檔案(建議拷貝到專案目錄下):5. 領悟迫不及待編譯了是不是?遇到錯誤了有沒有?這個檔案不是存在嗎?為什麼還報錯?
雙擊錯誤,又看見了紅線了是嗎?把尖括號換成引號吧。
再編譯,怎麼還有錯?這次是鏈結問題。
這個問題曾經難倒我乙個晚上啊,左思右想沒有進展。把庫編了一遍又一遍。關機後突然想到乙個可能原因,第二天一試果然好使。有人想到了嗎?答案是 x86 vs x64!我們編譯的庫是64位的,而 console 專案預設編譯是 win32。趕緊改!啟動配置管理器,新建 x64 平台。
新建 x64 平台
這下看到成功的提示了嗎?
探索是痛苦的,成功是開心的。可惜現實不會讓你在開心中沉浸太久。不說了,老闆又催進度了。
留下本文,為在痛苦中探索的程式猿提供一點點提示。萬一幫到誰了呢。沒準兒幾個月後我自己也會來 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...