Прототип уже зарегистрирован, уже существует в базе данныхC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Прототип уже зарегистрирован, уже существует в базе данных

Сообщение Anonymous »

У меня есть общая библиотека A.dylib, которая содержит все прототипы, которые я использую. Чтобы собрать эту библиотеку, protoc запускается для каждого файла прототипа, а затем я компилирую все файлы pb.cc и создаю A. У меня есть вторая библиотека, «B.dylib», которая ссылается на библиотеку A, но не перекомпилирует файлы .pb. файлы cc. Затем у меня есть статическая библиотека C, которая связана как с A, так и с B, и ей это необходимо, поскольку ей нужны символы из A, которых нет в B. Как бы то ни было, она прекрасно компилируется и работает в Linux. На Mac он компилируется, но затем приводит к ошибке выполнения, указанной ниже. Я думал, что прототипы должны быть собраны и скомпилированы ровно в одну библиотеку (в данном случае A), и можно связать B с A и C с {A,B}. Весь сгенерированный код protobuf находится только в A и не находится отдельно в B, скорее B ссылается на A, а B не имеет собственных скомпилированных версий файлов pb.cc. Я не уверен, что попробовать на этом этапе. Я использую одну версию libprotobuf в {A,B,C}.
E0000 00:00:1731530599.590256 26179788 descriptor_database.cc:656] File already exists in database: test.proto
F0000 00:00:1731530599.594211 26179788 message.cc:311] File is already registered: test.proto
*** Check failure stack trace: ***
@ 0x1053ee7b8 absl::lts_20240116::log_internal::LogMessage::SendToLog()
@ 0x1053ee088 absl::lts_20240116::log_internal::LogMessage::Flush()
@ 0x1053eeae4 absl::lts_20240116::log_internal::LogMessageFatal::~LogMessageFatal()
@ 0x1053eeafc absl::lts_20240116::log_internal::LogMessageFatal::~LogMessageFatal()
@ 0x105a33674 google::protobuf::MessageFactory::InternalRegisterGeneratedFile()
@ 0x1059c0934 google::protobuf::internal::AddDescriptorsRunner::AddDescriptorsRunner()
@ 0x196d16608 ___ZZNK5dyld46Loader25findAndRunAllInitializersERNS_12RuntimeStateEENK3$_0clEv_block_invoke
@ 0x196d54b38 ___ZNK5dyld313MachOAnalyzer18forEachInitializerER11DiagnosticsRKNS0_15VMAddrConverterEU13block_pointerFvjEPKv_block_invoke.202
@ 0x196d48400 ___ZNK5dyld39MachOFile14forEachSectionEU13block_pointerFvRKNS0_11SectionInfoEbRbE_block_invoke
@ 0x196cf72fc dyld3::MachOFile::forEachLoadCommand()
@ 0x196d47394 dyld3::MachOFile::forEachSection()
@ 0x196d49c6c dyld3::MachOFile::forEachInitializerPointerSection()
@ 0x196d5482c dyld3::MachOAnalyzer::forEachInitializer()
@ 0x196d1253c dyld4::Loader::findAndRunAllInitializers()
@ 0x196d18bc0 dyld4::JustInTimeLoader::runInitializers()
@ 0x196d12984 dyld4::Loader::runInitializersBottomUp()
@ 0x196d12928 dyld4::Loader::runInitializersBottomUp()
@ 0x196d16698 dyld4::Loader::runInitializersBottomUpPlusUpwardLinks()::$_1::operator()()
@ 0x196d12b78 dyld4::Loader::runInitializersBottomUpPlusUpwardLinks()
@ 0x196d35e3c dyld4::APIs::runAllInitializersForMain()
@ 0x196cfc010 dyld4::prepare()
@ 0x196cfaef4 start


Подробнее здесь: https://stackoverflow.com/questions/791 ... n-database
Ответить

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

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

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

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

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