Статический порядок инициализации фиаско: как мы можем гарантировать, что библиотека X будет связана только после того, как Protobuf будет сделан?

У нас есть 2 библиотеки - Google Protobuf (версия 4.2) и библиотека 'X'. Определенный объект X при инициализации использует определенные функции protobuf, что приводит к сбою нашего приложения, так как библиотека X сначала связывается, а затем Protobuf.. Как мы можем гарантировать, что библиотека X будет связана только после того, как Protobuf будет создан? Есть ли у нас опция / флаг компоновщика, чтобы сделать то же самое?

1 ответ

Да, порядок инициализации различных модулей компиляции имеет неопределенное поведение. Я часто полагаюсь на Singleton или Factory, чтобы установить правильный порядок инициализации.

Другие вопросы по тегам