Как исправить неразрешенную ошибку компоновщика external std::locale::id :: id в C++ Builder

При компиляции проекта C ++ Builder 10.4 я получаю следующую ошибку компоновщика:

[Ошибка ilink32] Ошибка: неразрешенная внешняя ссылка 'std :: locale :: id :: id(unsigned int)' из C: \ USERS \ PUBLIC \ DOCUMENTS \ EMBARCADERO \ STUDIO \ 21.0 \ DCP \ SCREEN2VIDEO.LIB|Screen2Video

Эта ошибка компоновщика возникает, когда параметр «Связать с динамическим RTL» отключен. При включении ошибка компоновщика не возникает, но я хочу статически линковать.

SCREEN2VIDEO.LIB из пакета, содержащего импортированный элемент управления ActiveX.

2 ответа

Та же проблема здесь, но с C++ Builder 11. Оказалось, проблема оптимизатора. Попробуйте отключить все оптимизации. Также ознакомьтесь с одним из связанных отчетов об ошибках на Embarcadero:https://quality.embarcadero.com/browse/RSP-29221

Изменить: я немного поэкспериментировал и нашел проблемный флаг компилятора. Это -finline-functions неявно добавляется при использовании -O2 или выше. Поэтому в качестве обходного пути вы можете добавить -fno-inline-functions в C ++ compiler> Advanced> Additional Options, чтобы заставить его работать, по крайней мере, не слишком сильно влияя на производительность.

Я также добавил эту информацию в вышеупомянутый отчет об ошибке.

Перекомпилируйте все зависимые пакеты (включая screen2video.bpl) с отключенным динамическим RTL. Это исправило ошибку компоновщика.

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