Что происходит с «Режимом отладки» (Многопоточная отладка) и «Режимом выпуска» (Многопоточность)?Что именно происходит под капотом?Почему именно это вызывает ошибку компоновки?
Компоновщик перетаскивает в библиотеки по нескольким причинам.Самым простым является то, что библиотека указана в командной строке компоновщика или в файле ответов компоновщика в командной строке компоновщика.Но любые объектные файлы, независимо от того, скомпилированы ли они в вашем проекте или упакованы в библиотеку, также могут содержать опций компоновщика , включая запрос на связывание определенных библиотек. Фактически, компилятор Visual C ++ автоматически встраивает такие опции компоновщика, соответствующие проекту.Опции, которые вы используете при компиляции.
Во время компоновки все опции компоновщика из всех объектных файлов и объектов в файлах статической библиотеки объединяются.Если запрашивается более одного имени файла библиотеки CRT, компоновщик считывает их все, и вы получаете конфликт имен, когда компоновщик не знает, какой из них использовать.
Интересно, есть личто-то под названием «Однопоточная отладка» и «Однопоточная», что снова вызывает ту же самую вещь.
Раньше было, но последние несколько версий Visual C ++ имели только многопоточную совместимостьбиблиотеки.
Документация говорит кое-что о "Опции генерации кода".Какие варианты генерации кода?WTH они?
Загляните в параметры вашего проекта .
Документация специально предупреждает нас не использовать обходной путь / NODEFAULTLIB.(пример / NODEFAULTLIB: msvcrt).Зачем?Как бы я вызвал проблемы?что именно это?
Если вы используете / NODEFAULTLIB, все настройки компоновщика, хранящиеся в объектных файлах и объектах в библиотеках, игнорируются.В итоге у вас не будет библиотеки времени выполнения и, возможно, будут отсутствовать другие библиотеки.Вы можете добавить их обратно вручную, но это все еще большой беспорядок.
Пожалуйста, объясните последний пункт в документации для пользователей MFC.Потому что я собираюсь использовать MFC позже в этом проекте.Объясните, почему мы должны это делать?Какие неприятности это может вызвать, если я не буду.Что-нибудь еще, что вы хотели бы упомянуть?Я имею в виду похожие ошибки.Я очень заинтересован в линкере и его проблемах.Таким образом, если есть какие-либо подобные вещи, вы можете упомянуть их или несколько ключевых слов по крайней мере.
Приложения MFC и библиотека MFC должны использовать одни и те же функции управления памятью, чтобы можно было освободить память, выделенную MFC.по заявке и наоборот.Дескрипторы FILE и другие ресурсы также являются общими.DLL-библиотеки MFC уже скомпилированы для использования CRT в DLL, и для того, чтобы иметь возможность совместно использовать ресурсы, вам необходимо использовать ту же CRT, что также означает использование DLL.