You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10+VS2019环境下使用Mojang LevelDB库遇到错误如何解决?

Windows 10 + Visual Studio 2019 下 Mojang LevelDB 正确使用指南

报错根因

你遇到的DLLX不完整类型报错,本质是Mojang LevelDB默认开启动态库编译,头文件中的导出符号需要额外的宏定义标记才能正确识别,未正确配置的情况下就会出现类型不完整、符号无法识别的问题。

完整配置步骤

1. 编译LevelDB库

拉取源码后通过CMake生成VS2019解决方案,根据你的需求选择编译模式:

  • 若使用静态库:CMake生成时添加参数 -DLEVELDB_BUILD_SHARED=OFF,关闭动态库生成,可直接规避DLL相关符号问题
  • 若使用动态库:保留默认LEVELDB_BUILD_SHARED=ON配置即可
    注意:LevelDB编译时的运行库版本(项目属性->C/C++->代码生成->运行库)必须和你的业务项目完全一致,MD/MDd对应动态运行库,MT/MTd对应静态运行库,版本不匹配会出现后续链接错误

2. 业务项目配置

打开你的VS项目属性页,按顺序配置以下选项:

  • 附加包含目录:在C/C++ -> 常规 -> 附加包含目录中,添加LevelDB源码根目录下的include文件夹路径
  • 附加库目录:在链接器 -> 常规 -> 附加库目录中,添加LevelDB编译产物中leveldb.lib所在的文件夹路径
  • 附加依赖项:在链接器 -> 输入 -> 附加依赖项中,新增leveldb.lib
  • 动态库专属配置:如果你选择编译动态库版本,需要在C/C++ -> 预处理器 -> 预处理器定义中新增LEVELDB_SHARED_LIBRARY,这是解决DLLX不完整类型报错的核心配置

3. 功能测试

你可以使用以下最简代码验证配置是否正确:

#include <leveldb/db.h>
#include <iostream>

int main()
{
    leveldb::DB* db_instance = nullptr;
    leveldb::Options opt;
    opt.create_if_missing = true;
    
    leveldb::Status open_status = leveldb::DB::Open(opt, "./test_db", &db_instance);
    if (!open_status.ok())
    {
        std::cerr << "数据库打开失败: " << open_status.ToString() << std::endl;
        return -1;
    }

    // 测试写入
    leveldb::Status write_status = db_instance->Put(leveldb::WriteOptions(), "test_key", "test_value");
    if (write_status.ok())
        std::cout << "写入成功" << std::endl;

    // 测试读取
    std::string read_result;
    leveldb::Status read_status = db_instance->Get(leveldb::ReadOptions(), "test_key", &read_result);
    if (read_status.ok())
        std::cout << "读取结果: " << read_result << std::endl;

    delete db_instance;
    return 0;
}

异常排查

  • 若仍出现DLLX不完整类型报错:确认是否添加了LEVELDB_SHARED_LIBRARY预处理器定义,或者是否混用了动态/静态库的编译产物
  • 若出现链接器符号找不到错误:检查运行库版本是否和LevelDB编译时一致,leveldb.lib是否已经添加到附加依赖项
  • 若运行时提示缺少leveldb.dll:将编译生成的leveldb.dll复制到业务项目生成的exe同目录下即可

内容的提问来源于stack exchange,提问作者Abdrlrahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:15:03