В моей 32-разрядной версии есть проблема с несколькими определенными символами.
Есть несколько математических функций, которые вызывают проблемы:
Код: Выделить всё
lld-link: error: duplicate symbol: __CIcos
>>> defined at libmmt.lib(cos_iface_c99.obj)
>>> defined at libucrt.lib(cos_impl.obj)
lld-link: error: duplicate symbol: __CIexp
>>> defined at libmmt.lib(exp_iface_c99.obj)
>>> defined at libucrt.lib(87ctran.obj)
lld-link: error: duplicate symbol: __CIlog
>>> defined at libmmt.lib(log_iface_c99.obj)
>>> defined at libucrt.lib(log_impl.obj)
lld-link: error: duplicate symbol: __CIpow
>>> defined at libmmt.lib(pow_iface_c99.obj)
>>> defined at libucrt.lib(pow_impl.obj)
lld-link: error: duplicate symbol: __CIsin
>>> defined at libmmt.lib(sin_iface_c99.obj)
>>> defined at libucrt.lib(sin_impl.obj)
lld-link: error: duplicate symbol: __CItan
>>> defined at libmmt.lib(tan_iface_c99.obj)
>>> defined at libucrt.lib(tan_impl.obj)
Я где-то читал об исключении некоторых объектов из libucrt, но это последнее, что я хочу делать. И я не могу себе представить, что это действительно необходимо: я ни в коем случае не первый человек, который попытается создать 32-битную сборку выпуска.
Чего мне здесь не хватает?
Немного дополнительного контекста:
Я пытаюсь использовать CMakeLists для объединения нескольких библиотек. Я устанавливаю /MT (и заменяю /MD) для всего, что сделал сам, но многое беру из репозиториев git. Однако я не получаю никаких предупреждений о несоответствии статических/динамических ссылок. Поэтому я предполагаю, что ошибки компоновщика, которые я получаю сейчас, не связаны с «смешиванием сред выполнения» (поправьте меня, если я ошибаюсь, мои знания в этом вопросе очень базовые).
Подробнее здесь: https://stackoverflow.com/questions/792 ... -need-both
Мобильная версия