Связывание ошибок при создании последнего выпуска буферов протокола для Windows 10C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Связывание ошибок при создании последнего выпуска буферов протокола для Windows 10

Сообщение Anonymous »

Мне нужно создать буферы протокола (PB) в качестве внешней зависимости для проекта, с которым я планирует использовать его. В прошлом я успешно создавал и использовал PB для других проектов, но эти проекты использовали более старую версию, которая не имела зависимости от абсолютной. Я пытаюсь создать последний выпуск, используя Cmake в среде Windows 10, но я продолжаю получать множество ошибок LNK2001 и LNK2019 «нерешенные внешние символы», которые, кажется, должны иметь дело с неспособностью связываться с элементами библиотеки Abseil. Я не знаю, как это исправить. Я обыскал Интернет, и я искал переполнение стека по аналогичным вопросам и не нашел ничего связанного. Я планирую вынести все это через модуль Cmake ExternalProject позже, когда я решал все проблемы с сборкой, которые у меня есть (что я сначала заметил, пытаясь точно сделать это.)]
, что я попробовал:
  • Сначала я построил Abseil (в экземпляре (в экземпляре). />
  • Я следовал инструкциям здесь https://github.com/abseil/abseil-cpp/bl ... /readme.md для установки Abseil. /> Сначала я выполнил шаг конфигурации Cmake со следующей командой:
    $ cmake -S . -B ./build -DCMAKE_PREFIX_PATH=
    projects/install/ -DCMAKE_INSTALL_PREFIX=/projects/install/ -DABSL_ENABLE_INSTALL=ON -DABSL_USE_EXTERNAL_GOOGLETEST=ON -DABSL_FIND_GOOGLETEST=ON (где - родительский путь, содержащий мою папку проектов, которую я выпускаю здесь)
  • Я построил Absiel со следующей командой:
    cmake --build ./build --config Release
  • cmake -build ./build -target install
  • Это успешно привело к тому, что библиотеки abseil были установлены в /projects/install
[*] в /projects i клонировал буферы протокола и введенный в каталог Protobuf
[*] Мой шаг конфигурации Cmake был выполнен следующим образом:

cmake -S . -B ./build -DCMAKE_INSTALL_PREFIX=projects/install -DCMAKE_CXX_STANDARD=17 -DCMAKE_PREFIX_PATH=projects/install/ -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -Dprotobuf_BUILD_SHARED_LIBS=ON
Я также попробовал его без спецификаций для protobuf_msvc_static_runtime и protobuf_build_shared_libs Хотя в прошлом я успешно использовал эти спецификации с более ранними версиями. /> Естественно, я ожидал, что буферы протокола успешно создают libprotobuf.dll libprotobuf-lite.dll , libprotoc.dll и protoc.exe .
Что на самом деле приводило
massive number number>

LNK2019 и LNK2001 с участием неразрешенных внешних символов для библиотечных методов ABSL, из которых я предоставлю здесь очень небольшую выборку: < /p>
any_lite.obj : error LNK2019: unresolved external symbol "public: unsigned __int64 __cdecl absl::string_view::rfind(char,unsigned __int64)const " (?rfind@string_view@absl@@QEBA_KD_K@Z) referenced in function "bool __cdecl google::protobuf::internclass std::allocator > *,class std::basic_string *)" (?ParseAnyTypeUrl@internal@protobuf@google@@YA_NVstring_view@absl@@PEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D
descriptor.obj : error LNK2001: unresolved external symbol "public: unsigned __int64 __cdecl absl::string_view::rfind(char,unsigned __int64)const " (?rfind@string_view@absl@@QEBA_KD_K@Z) [C:\Users\tdennis\projects\protobuf\build\protoc-gen-upbdef
names.cc.obj : error LNK2001: unresolved external symbol "public: unsigned __int64 __cdecl absl::string_view::rfind(char,unsigned __int64)const "


Подробнее здесь: https://stackoverflow.com/questions/795 ... windows-10
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»