Конфликты символов (ошибка LNK2005 frexp уже определена в libmmt.lib(frexp_iface_c99.obj)) с компилятором Intel icx внутC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Конфликты символов (ошибка LNK2005 frexp уже определена в libmmt.lib(frexp_iface_c99.obj)) с компилятором Intel icx внут

Сообщение Anonymous »

Я тестирую сборку проекта C++20 и столкнулся с ошибкой компоновщика после обновления Windows SDK с версии 10.0.22621.0 до 10.0.26100.0. Описание, данное компоновщиком в VS2022 (17.10.3), следующее: «Код серьезности Описание состояния подавления строки файла проекта
Ошибка LNK2005 frexp уже определена в libmmt.lib(frexp_iface_c99.obj) NNExtended D:\NNetworks\Fashion- MNIST\NNExtended\libucrtd.lib(frexp.obj): 1 ". Просматривая журнал компоновщика, вы можете увидеть

Код: Выделить всё

Found _decomp
Referenced in libucrtd.lib(fpexcept.obj)
Loaded libucrtd.lib(frexp.obj)
libucrtd.lib(frexp.obj) : : error LNK2005: frexp already defined in libmmt.lib(frexp_iface_c99.obj)
Я думаю, ошибка возникает из-за того, что символ frexp определен в статической библиотеке отладки MSVC libucrtd.lib и статической библиотеке Intel libmmt.lib!
frexp действительно находится в символах, экспортированных Intel libmmt.lib

Код: Выделить всё

PS D:\> dumpbin.exe /symbols "C:\Program Files (x86)\Intel\oneAPI\compiler\latest\lib\libmmt.lib" | Select-String "frexp"

008 00000000 SECT4 notype () External | __frexpq
frexpq.c
008 00000000 SECT4 notype () External | frexpf16
010 00000000 UNDEF notype External | frexpf
00B 00000000 SECT5 notype () External | __libm_frexpl_ex
frexpl.c
008 00000000 SECT4 notype () External | __libm_frexpf_ex
frexpf.c
008 00000000 SECT4 notype () External | __libm_frexp_e7
frexp_ct.c
00B 00000000 SECT5 notype () External | __libm_frexp_ex
frexp_gen.c
03C 00000000 UNDEF notype External | __libm_frexpl
050 00000000 SECT1C notype () External | __bwr_frexpf
0AE 00000000 UNDEF notype External | __libm_frexpf_ex
00B 00000000 SECT5 notype () External | __bwr_frexp
frexp_bwr.c
008 00000000 SECT4 notype () External | frexpl
010 00000000 UNDEF notype External | __libm_frexpl_ex
008 00000000 SECT4 notype () External | __libm_frexpl
010 00000000 UNDEF notype External | __libm_frexpl_ex
008 00000000 SECT4 notype () External | frexpf
00C 00000000 UNDEF notype External | __libm_frexpf_ex
008 00000000 SECT4 notype () External | __libm_frexpf
00C 00000000 UNDEF notype External | __libm_frexpf_ex
008 00000000 SECT4 notype () External | frexp
00C 00000000 UNDEF notype External | __libm_frexp_chosen_core_func_icx
008 00000000 SECT4 notype () Static | __libm_frexp_dispatch_table_icx_init_icx
00D 00000000 SECT5 notype () External | __libm_frexp
017 00000000 SECT6 notype Static | __libm_frexp_dispatch_table_icx
018 00000000 SECT2 notype External | __libm_frexp_chosen_core_func_icx
019 00000000 UNDEF notype External | __libm_frexp_ex
01A 00000000 UNDEF notype External | __libm_frexp_e7
и символы, экспортированные libucrtd.lib

Код: Выделить всё

PS D:\> dumpbin.exe /symbols "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\ucrt\x64\libucrtd.lib" | Select-String "frexp"

11B 00000000 SECT59 notype External | ??_C@_05GKKHEGJL@frexp@ (`string')
04A 00000000 SECT19 notype () External | frexp
059 00000000 SECT1D notype Static | $unwind$frexp
05C 00000000 SECT1E notype Static | $pdata$frexp
Я не получаю ошибок компиляции при использовании компилятора Visual C++! Это происходит только с компилятором Intel C++ (2024.2.0.491). Флаги компилятора в этой конфигурации:

Код: Выделить всё

/MP /GS /TP /Wall /QxCOMMON-AVX512 /Gy /Zc:wchar_t /guard:cf /Zi /Od /debug:full /Ob0 /fp:precise /D "_DEBUG" /D "_CONSOLE" /D "__TEST__" /D "__INTEL_LLVM_COMPILER=20240200" /D "_UNICODE" /D "UNICODE" /fp:except /Zc:forScope /std:c17 /GR- /arch:AVX512 /MTd /QaxCOMMON-AVX512 /std:c++20 /Fa".\bin\Test\" /EHa /nologo /Fo".\bin\Test\" /Qstd=c++2a /Ot

и параметры компоновщика:

Код: Выделить всё

/OUT:".\bin\Test\NNExtended.exe" /MANIFEST /NXCOMPAT /PDB:".\bin\Test\NNExtended.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG:FULL /MACHINE:X64 /INCREMENTAL /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:".\bin\Test\NNExtended.exe.intermediate.manifest" /ILK:".\bin\Test\NNExtended.ilk" /NOLOGO /VERBOSE /TLBID:1

Как мне решить эту проблему? Буду признателен за любую помощь по этому поводу! Спасибо!
  • Пытался удалить libucrtd.lib из флага компоновщика /DEFAULTLIBS, но это порождает массу неразрешенных внешних ошибок.
  • Пробовал использовать Visual C++, компиляция работает нормально. Проблема возникает только с Intel ICX!
  • Связывание с ICX происходит успешно, когда я выбираю динамическое связывание с /MDd, но не удается со статическим связыванием /MTd!
  • В руководстве по компилятору Intel oneAPI C/C++ указано, что компиляторы Intel используют один и тот же файл libmmt.lib для статического связывания как в конфигурациях отладки, так и в конфигурациях выпуска с /MT и /MTd. Но предоставляет две отдельные библиотеки libmmd.lib и libmmdd.lib для конфигураций /MD и /MDd! (Страница 382)


Подробнее здесь: https://stackoverflow.com/questions/786 ... p-iface-c9
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Решение «Ошибка lnk2005: ... уже определено *.obj» из внешнего класса?
    Anonymous » » в форуме C++
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Решение «Ошибка lnk2005: ... уже определено *.obj» из внешнего класса? [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Ошибка LNK2005: _DllMain@12 уже определен в MSVCRT.lib
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • CMake с vcpkg — включение libbid.lib (intel math lib) в качестве зависимости для внешнего исходного кода (TWS API)
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между компилятором C и компилятором C++ компилятора Microsoft C/C++?
    Anonymous » » в форуме C++
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous

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