Конфликт StaticCRT(LIBCMT(D)) и DynamicCRT(MSVCRT(D))
Я занимаюсь разработкой проекта, который использует сторонние библиотеки и библиотеки. Я хочу построить свой проект, используя статический CRT (LIBCMTD), так как я хочу запустить свое приложение в "IBM очистителе". Однако сторонние библиотеки создаются с использованием динамического ЭЛТ (MSVCRT).
Это приводит к ошибке компоновки: MSVCRTD.lib(MSVCR80D.dll): ошибка LNK2005: __mktime64 уже определено в LIBCMTD.lib(mktime64.obj) MSVCRTD.lib(MSVCR80D.dll): ошибка LNK2005: __gmtime64 уже определено в LIBCT gmtime64.obj) MSVCRTD.lib(MSVCR80D.dll): ошибка LNK2005: __localtime64 уже определено в LIBCMTD.lib(loctim64.obj)
Я пробовал различные настройки компоновщика. Также я дал /FORCE:MULTIPLE командной строке компоновщика, чтобы игнорировать несколько определений и создать сборку. Это так, но мое приложение все еще не могло работать в очистителе.
Есть ли хороший способ сделать то, что я пытаюсь достичь? У меня нет контроля над сторонним исходным кодом для управления их настройками.
Спасибо
1 ответ
Если он должен быть собран с использованием только статической библиотеки, вы, вероятно, подключены - их DLL уже настроена для динамической ссылки на стандартную библиотеку, и ничто из того, что вы делаете при создании остальной части проекта, не изменит это (если только вы можете заставить этого поставщика предоставить версию, которая статически ссылается на стандартную библиотеку).