我想在我的C++程序中使用libzip從zip壓縮文件中提取文件。所以首先,我得到其中的文件數量,獲取他們的名字並閱讀它們。爲了獲得文件的數量,我使用'zip_get_num_entries'。它的原型是:編譯器在Windows上找不到對zip_get_num_entries的引用
zip_uint64_t zip_get_num_entries(struct zip *, int)
而且我的方式使用此功能:
int nbrEntries(0);
zip *archive = zip_open("myZip.zip", 0, 0);
nbrEntries = zip_get_num_entries(archive, 0);
當我寫了這個代碼,代碼:: Blocks的建議我zip_get_num_entries,所以沒有頭的問題。但是,當我編譯,編譯器(MinGW的)告訴我:
undefined reference to `_imp__zip_get_num_entries'
所以,我想它的過時的等效,zip_get_num_files和它的工作。我將其包含到我用CMake製作的項目libzip.dll.a中。我有兩個文件:libzip.dll和libzip.dll.a。
我確定這是一個庫問題(請注意,我在MacOS上沒有這個問題),但我不知道如何解決這個問題。謝謝!
編輯:我搜索了他們的網站,並且讀到zip_get_num_files的實現是新的,當他們發佈網站上提供的庫時。所以我搜索了他們的Mercurial回購軟件,發現了兩天前發佈的版本(比網站上發佈的版本要近1年)。我用CMake構建它,它工作正常!
我在項目編譯選項菜單「編譯器設置」>「其他選項」中添加了-lzip,但總是有相同的消息: - /我可能配置了什麼錯誤? – Tiwenty 2013-02-22 12:02:26
哦,我成功地編譯了我的程序!我從他們的Mercurial repo下載了一個更新的版本,它工作! http://hg.nih.at/libzip/rev/3bf116d0b3e9 – Tiwenty 2013-02-22 12:29:22