使用libchive在Qt -构建错误
Using libarchive in Qt - build errors
我已经掌握了libchive,并根据构建说明在Windows和Linux上构建了示例。
我现在想在我的项目中使用这个库,它是基于Qt的,所以我使用Qt creator。我已经在我的配置文件中添加了libchive的包含路径,但是当我编译时,我得到错误说"对'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 = %ldn", currentFile, entry_size);
printf("%snn", 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:未定义引用_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 to
imp_archive_read_support_compression_none'D:Tar-build-desktop- qt_4_7_4_for_desktop_ - _ming_4_4_qt_sdk_debug/../Tar/TarFileManager.cpp:18:未定义引用_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 to
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 to
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 to
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:未定义引用_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 to
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:未定义引用_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 to
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 to
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 to
imp_archive_read_next_header'
正如我所怀疑的,这是一个链接问题。你实际上并没有链接到图书馆。我不知道你如何在Qt Creator中做到这一点,但你必须将标志-L/path/to/library/folder
和-lname_of_library
添加到链接阶段。
- Agora.io 虚幻引擎插件构建错误
- 尝试将 boost::stacktrace 添加到 CMake 项目时出现构建错误
- Arch Linux.AUR 包 mysql 不能用 makepkg 构建.错误:构建 () 中出现故障
- 组件上的虚幻引擎可蓝图UFUNCTION会导致构建错误
- 尝试构建 xerces c++ 解析器。Netbeans 和命令行构建错误未定义对"xercesc_3_2..."的引用
- pair的两个构造函数几乎相同,为什么不生成构建错误?
- 发生 Qt5.11 应用插件构建错误:信号和插槽参数不兼容
- Visual Studio 2017 中的 Tesseract 3.05 构建错误
- Eclipse 构建错误在默认的 hello world 上
- C++ CMake 构建错误:未定义对"boost::throw_exception(std::exception const&)"的引用
- 在 solaris 上增加 1.64 构建错误
- xgboost 构建错误:参数包未扩展为"..":
- 使用GCC 4.8构建错误:数组用作初始化器
- 编译 Java TD 客户端时出现构建错误
- 如何修复安卓工作室中的NDK构建错误
- C++ Cassandra 构建错误
- 我在 MinGW 和 VS 代码"g++ not recognized as a cmdlet..."时遇到构建错误
- Microsoft Visual Studio 2008,版本9.0.30739.1 SP,DLL构建错误
- 使用PPConsul(C 的领事客户端)构建错误的C 项目
- WURFL nginx 构建错误