Ошибка компоновщика: дублируются символы из libucrt и libmmt, но нужны обаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка компоновщика: дублируются символы из libucrt и libmmt, но нужны оба

Сообщение Anonymous »

Я пытаюсь создать проект с помощью компилятора Intel OneAPI 2024.2.1.
В моей 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)
Большая проблема в том, что когда я исключаю любую из этих библиотек (используя /nodefaultlib), я получаю кучу недостающих реализаций.
Я где-то читал об исключении некоторых объектов из libucrt, но это последнее, что я хочу делать. И я не могу себе представить, что это действительно необходимо: я ни в коем случае не первый человек, который попытается создать 32-битную сборку выпуска.
Чего мне здесь не хватает?
Немного дополнительного контекста:
Я пытаюсь использовать CMakeLists для объединения нескольких библиотек. Я устанавливаю /MT (и заменяю /MD) для всего, что сделал сам, но многое беру из репозиториев git. Однако я не получаю никаких предупреждений о несоответствии статических/динамических ссылок. Поэтому я предполагаю, что ошибки компоновщика, которые я получаю сейчас, не связаны с «смешиванием сред выполнения» (поправьте меня, если я ошибаюсь, мои знания в этом вопросе очень базовые).

Подробнее здесь: https://stackoverflow.com/questions/792 ... -need-both
Ответить

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

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

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

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

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