【问题标题】:Can't get libzippp working in VC++ 64 bit无法让 libzippp 在 VC++ 64 位中工作
【发布时间】:2021-08-16 07:16:14
【问题描述】:

我正在寻找 Zip 库,而 libzippp 看起来正是我想要的,所以我正在尝试小型 POC 控制台应用程序。
这是第一个,它在 x86 中运行良好,但是当我尝试在 x64 中编译时,我得到“未解析的外部 readAsText”。
我使用 vcpkg 来获取库
vcpkg 安装 libzippp
vcpkg 安装 libzippp:x64-Windows

错误 LNK2019 未解析的外部符号“public: class std::basic_string __cdecl libzippp::ZipEntry::readAsText(enum libzippp::ZipArchive:: State,unsigned long)const " (? readAsText@ZipEntry@libzippp@@QEBA ? AV ? $basic_string@DU ? $char_traits@D@std@@V ? $allocator@D@2@@std@@W4State@ZipArchive@ 2@K@Z) 在函数 main Zip6 D 中引用:\rcodeNET\Dev\Zip6\Zip6.obj 1


#include <iostream>
#include "libzippp\libzippp.h"
using namespace std;
using namespace libzippp;

int main()
{
    ZipArchive zf("d:\\1zip\\Gender.zcd");
    bool ok = zf.open(ZipArchive::ReadOnly);

    vector<ZipEntry> entries = zf.getEntries();

    ZipEntry ze;
    for (int i = 0; i < entries.size(); i++)
    {
        ze = entries[i];
 
        string name = ze.getName();
        int size = ze.getSize();
        std::cout << name << "=" << size << "\n";

        string textData = ze.readAsText();
        std::cout << "text " << textData << "\n";
    }
}

【问题讨论】:

  • 不是真的,有点太笼统了。不过,我还有另一个线索。上面的错误消息给出了它正在寻找的完整名称(我认为就是这样): ?readAsText@ZipEntry@libzippp@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V ?$allocator@D@2@@std@@W4State@ZipArchive@2@K@Z 并且该库将函数导出为 ?readAsText@ZipEntry@libzippp@@QEBA?AV?$basic_string@DU?$char_traits@D @std@@V?$allocator@D@2@@std@@W4State@ZipArchive@2@_K@Z 最后几个字符有一个字符不同:错误消息以@K@Z结尾,lib导出以@结尾_K@Z
  • 您解决了这个问题吗?我在使用柯南包时遇到了同样的问题。
  • 我解决了这个问题。该软件包在 32 位中运行良好,但在 64 位中不匹配。只是一时兴起,我尝试了一个控制台应用程序,它不打扰使用 libzippp 软件包。我只是包含了源代码,我在 D:\vcpkg\vcpkg-master\buildtrees\libzippp\src\32217e672c-26e2865e9c.clean\src 的 vcpkg 目录中找到的只有两个文件,libzippp.cpp/.h。我将它们复制到我的源目录,包含在项目中,编译它并且它工作。它引入了一些 vcpkg 依赖项,但没有引入 libzippp 包,因此我绕过了不匹配。

标签: visual-c++ unzip zipfile


【解决方案1】:

我想我明白了,应该将WIN32 添加到项目的预处理器定义中。

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2017-12-13
    • 2019-12-29
    • 2011-01-02
    相关资源
    最近更新 更多