首页 > 解决方案 > 建筑 x86_64,柯南 geolite2pp 的未定义符号

问题描述

我正在尝试构建conan具有依赖性的源,我得到了

Undefined symbols for architecture x86_64:

我正在尝试在 c++ 项目中使用 geolite2pp,但出现此错误

这是 conanfile.py 的内容

class AppConan(ConanFile):
    settings = "os", "compiler", "build_type", "arch"

    requires =  "geolite2pp/0.0.1-2561@avantize/stable"

    generators = "cmake"

运行时出错

conan install -s build_type=Release --build=missing
Undefined symbols for architecture x86_64:
  "_MMDB_aget_value", referenced from:
      GeoLite2PP::DB::get_field(MMDB_lookup_result_s*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<char const*, std::__1::allocator<char const*> > const&) in GeoLite2PP.cpp.o
  "_MMDB_close", referenced from:
      GeoLite2PP::DB::~DB() in GeoLite2PP.cpp.o
      GeoLite2PP::DB::~DB() in GeoLite2PP.cpp.o
  "_MMDB_free_entry_data_list", referenced from:
      GeoLite2PP::DB::to_json(MMDB_entry_data_list_s*) in GeoLite2PP.cpp.o
  "_MMDB_get_entry_data_list", referenced from:
      GeoLite2PP::DB::lookup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in GeoLite2PP.cpp.o
  "_MMDB_get_metadata_as_entry_data_list", referenced from:
      GeoLite2PP::DB::get_metadata() in GeoLite2PP.cpp.o
  "_MMDB_lib_version", referenced from:
      GeoLite2PP::DB::get_lib_version_mmdb() const in GeoLite2PP.cpp.o
  "_MMDB_lookup_string", referenced from:
      GeoLite2PP::DB::lookup_raw(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in GeoLite2PP.cpp.o
  "_MMDB_open", referenced from:
      GeoLite2PP::DB::DB(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in GeoLite2PP.cpp.o
  "_MMDB_strerror", referenced from:
      GeoLite2PP::ErrorCategory::message(int) const in GeoLite2PP_error_category.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: *** [src-lib/CMakeFiles/geolite2++s.dir/build.make:99: src-lib/libgeolite2++.dylib] Error 1
[ 75%] Built target geolite2++
gmake[1]: *** [CMakeFiles/Makefile2:93: src-lib/CMakeFiles/geolite2++s.dir/all] Error 2

标签: c++geolite2

解决方案


推荐阅读