gpt4 book ai didi

c++ - 在 Qt 中使用 libarchive - 构建错误

转载 作者:行者123 更新时间:2023-11-28 08:13:42 31 4
gpt4 key购买 nike

我已经掌握了 libarchive并按照 build instructions 在 Windows 和 Linux 上构建示例.

我现在想在我的基于 Qt 的项目中使用这个库,所以我正在使用 Qt Creator。我已经在我的 pro 文件中添加了 libarchive 的包含路径,但是当我编译时,我收到错误提示“未定义对 'imp_archive_read_new' 的引用”等等。

这是我目前的代码:

    #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include "archive.h"
#include "archive_entry.h"

cTarFileManager::cTarFileManager()
{
struct archive *a;
struct archive_entry *entry;
int r;
int64_t entry_size;
a = archive_read_new();
archive_read_support_compression_none(a);
archive_read_support_format_tar(a);
r = archive_read_open_filename(a, "0000.tar", 1024);
if (r != ARCHIVE_OK)
{
printf("archive not found");
}
else
{
while (archive_read_next_header(a, &entry) == ARCHIVE_OK)
{
const char *currentFile = archive_entry_pathname(entry);
char *fileContents;
entry_size = archive_entry_size(entry); //get the size of the file
fileContents = (char*)malloc(entry_size); //alloc enough for string - from my testing I see that this is how many bytes tar and ls report from command line
archive_read_data(a, fileContents, entry_size); //read data into fileContents string for the HTML file size
if(strcmp(currentFile, "vendar-definition.html") == 0)
{
printf("file name = %s, size = %ld\n", currentFile, entry_size);
printf("%s\n\n", fileContents); //this output over-reads chars from another file in this tar file
}
free(fileContents); //free the C string because I malloc'd
}
}
printf("exit");
}

这是我得到的完整列表或错误:D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:16: undefined reference _imp__archive_read_new'
D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:17: undefined reference
imp_archive_read_support_compression_none'D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:18: undefined reference _imp__archive_read_support_format_tar'
D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:19: undefined reference
imp_archive_read_open_filename'D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:28: 未定义对 _imp__archive_entry_pathname 的引用'
D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:30: undefined reference
imp_archive_entry_size'D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:32: 未定义对 _imp__archive_read_data 的引用'
D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:26: undefined reference
imp_archive_read_next_header'D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:16: undefined reference _imp__archive_read_new'
D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:17: undefined reference
imp_archive_read_support_compression_none'D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:18: undefined reference _imp__archive_read_support_format_tar'
D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:19: undefined reference
imp_archive_read_open_filename'D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:28: 未定义对 _imp__archive_entry_pathname 的引用'
D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:30: undefined reference
imp_archive_entry_size'D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:32: 未定义对 _imp__archive_read_data 的引用'
D:\Tar-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug/../Tar/TarFileManager.cpp:26: undefined reference
imp_archive_read_next_header'

最佳答案

正如我所怀疑的,这是一个链接问题。您实际上并没有链接到图书馆。我不知道你如何在 Qt Creator 中做到这一点,但你必须将标志 -L/path/to/library/folder-lname_of_library 添加到链接阶段。

关于c++ - 在 Qt 中使用 libarchive - 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340325/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com