Конфликт 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 уже настроена для динамической ссылки на стандартную библиотеку, и ничто из того, что вы делаете при создании остальной части проекта, не изменит это (если только вы можете заставить этого поставщика предоставить версию, которая статически ссылается на стандартную библиотеку).

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