Конфликт StaticCRT (LIBCMT (D)) и DynamicCRT (MSVCRT (D)) - PullRequest
0 голосов
/ 05 февраля 2010

Я занимаюсь разработкой проекта, в котором используются сторонние библиотеки и библиотеки. Я хочу построить свой проект с использованием статического CRT (LIBCMTD), поскольку я хочу запускать свое приложение в "IBM очистителе". Однако сторонние библиотеки создаются с использованием динамического CRT (MSVCRT).

Это дает ошибку связывания как: MSVCRTD.lib (MSVCR80D.dll): ошибка LNK2005: __mktime64 уже определено в LIBCMTD.lib (mktime64.obj) MSVCRTD.lib (MSVCR80D.dll): ошибка LNK2005: __gmtime64 уже определено в LIBCMTD.libj. lib (MSVCR80D.dll): ошибка LNK2005: __localtime64 уже определено в LIBCMTD.lib (loctim64.obj)

Я пробовал различные настройки компоновщика. Также я дал / FORCE: MULTIPLE командной строке компоновщика, чтобы игнорировать несколько определений и создать сборку. Это так, но мое приложение все еще не может работать в очистителе.

Есть ли хороший способ сделать то, что я пытаюсь достичь? У меня нет контроля над сторонним исходным кодом для управления их настройками.

Спасибо

1 Ответ

1 голос
/ 05 февраля 2010

Если его нужно собрать, используя только статическую библиотеку, вы, вероятно, подключены - их DLL уже настроена для динамической ссылки на стандартную библиотеку, и ничего, что вы сделаете при создании остальной части проекта, не изменится это (если только вы не можете заставить этого поставщика предоставить версию, которая статически ссылается на стандартную библиотеку).

...