Неразрешенный внешний символ google::protobuf::internal::fixed_address_empty_string при связывании статического libprotoC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неразрешенный внешний символ google::protobuf::internal::fixed_address_empty_string при связывании статического libproto

Сообщение Anonymous »

Я загрузил двоичные файлы gRPC из thommyho/Cpp‑gRPC‑Windows‑PreBuilts (предварительно созданные двоичные файлы и библиотеки gRPC для Windows | x64 и x86 | MSVC143, MSVC142 (устаревшие версии 141 и 140) | Debug, Release, RelWithDebInfo, версия v1.76.0).

Среди файлов есть библиотеки, такие как libprotobuf.lib и т. д.
Когда я использую этот libprotobuf (думаю, это статическая версия), я всегда получаю ошибку компоновщика:

Код: Выделить всё

unresolved external symbol
"class google::protobuf::internal::GlobalEmptyStringConstexpr const
google::protobuf::internal::fixed_address_empty_string"
Если вместо этого я возьму libprotobuf из свежего клона репозитория protobuf, добавлю соответствующий protobuf.dll в папку, определю макрос препроцессора PROTOBUF_USE_DLLS и свяжу его с DLL, клиентская сторона собирается и работает нормально.
Что касается серверной стороны, я пытаюсь сделать то же самое, добавив также библиотеку g++_reflection и написав:

Код: Выделить всё

   #include 
grpc::reflection::InitProtoReflectionServerBuilderPlugin();
Когда я использую DLL-версию protobuf вместе с плагином отражения, я получаю гораздо больше неразрешенных внешних символов.

Если я переключусь обратно на статическую библиотеку libprotobuf.lib, поставляемую с двоичными файлами gRPC, большинство этих ошибок исчезнут, оставив только ошибку fix_address_empty_string.
Похоже, возникла проблема с символ fix_address_empty_string в статической библиотеке libprotobuf.lib?
(в конце все работает нормально, потому что я могу найти обходные пути, но это все равно кажется странным)

Подробнее здесь: https://stackoverflow.com/questions/798 ... mpty-strin
Ответить

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

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

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

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

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