我想在我的C程序中有unrar文件的能力。我正在尋找一個應該有能力打開和提取RAR 3檔案的圖書館。我發現獲得合理的一個令人驚訝地很難。我遇到了unrarlib(http://unrarlib.org),這看起來很有希望,直到我發現它過於嚴重過時爲止。谷歌無法給我任何其他的東西。尋找一個最新的C RAR庫
任何幫助將非常感激。
我想在我的C程序中有unrar文件的能力。我正在尋找一個應該有能力打開和提取RAR 3檔案的圖書館。我發現獲得合理的一個令人驚訝地很難。我遇到了unrarlib(http://unrarlib.org),這看起來很有希望,直到我發現它過於嚴重過時爲止。谷歌無法給我任何其他的東西。尋找一個最新的C RAR庫
任何幫助將非常感激。
嘗試http://packages.ubuntu.com/raring/unrar-free - 這些是最新的。在頁面的右側,有一個到.orig.tar.gz的鏈接 - 它有源代碼。
請注意,rar是一種商業產品,它是封閉的來源,並且與技術有關的許可限制。可能沒有您可以使用的現成的源代碼。
謝謝,我會試試這個。似乎我確實無法爲此找到一些簡單的代碼。 – szczurcio
鏈接:libarchive及其github。
起初看起來有點過時,但一旦你理解它就會流動得很好。我已經添加了一個95%的示例程序,它們是一個簡單閱讀示例的副本。
#include <stdio.h>
#include <archive.h>
int main() {
struct archive_entry *ae;
const char * filename = "test.rar";
int r;
size_t size;
struct archive *a = archive_read_new();
archive_read_support_compression_all(a);
archive_read_support_format_rar(a);
r = archive_read_open_filename(a, filename, 16384);
if (r != ARCHIVE_OK) {
/* ERROR */
}
r = archive_read_next_header(a, &ae);
if (r != ARCHIVE_OK) {
/* ERROR */
}
char buff[1000];
int buffsize = sizeof(buff);
for (;;) {
size = archive_read_data(a, buff, buffsize);
if (size < 0) {
/* ERROR */
}
if (size == 0)
break;
write(1, buff, size);
}
archive_read_free(a);
}
libarchive是好的,但它是達不到最新的本身(某些功能缺失,如加密RAR的支持)。
我看到unrar-free被提及。試試The Unarchiver的unar/lsar命令。它功能完整,您也可以獲得對舊版RAR格式的支持。
你應該澄清你在「現代」圖書館需要什麼。否則,這個問題很可能會被關閉。祝你好運! –
如果您從頁面指向的「原始源代碼」中刪除文件名,那麼會有一個包含最近日期的大型目錄。 ftp://ftp.rarlabs.com/rar/ –