寻找最新的C Rar库

时间:2013-07-04 04:54:41

标签: c rar

我希望能够在我的C程序中使用unrar文件。我正在寻找一个能够打开并提取RAR 3档案库的库。我发现获得一个合理的难度非常困难。我遇到过unrarlib(http://unrarlib.org)这看起来很有希望,直到我发现它已经过时了。谷歌无法给我任何其他东西。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

尝试http://packages.ubuntu.com/raring/unrar-free - 这些是最新的。在页面的右侧,有一个指向.orig.tar.gz的链接 - 这里有源代码。

请注意,rar是商业产品,它是封闭源,并且具有与该技术相关的许可限制。可能没有可以使用的现成源代码。

答案 1 :(得分:0)

链接: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);
}

答案 2 :(得分:0)

libarchive很好,但它本身并不是最新的(缺少某些功能,例如支持加密的RAR)。

我看到提到了unrar-free。尝试The Unarchiver中的unar / lsar命令。它功能齐全,您也可以获得旧RAR格式的支持。