ВАЖНО: LNK2001 может иметь миллионы причин!
Если мое решение не поможет в вашем конкретном случае, и если эта страница не содержит ни: http://msdn.microsoft.com/en-us/library/f6xx1b1z%28v=vs.71%29.aspx
затем быть в курсе, чтобы включить как можно больше ключевых слов в этой категории, как это возможно. Как в моем случае «LIBCMT.lib LNK2001 _main». Это важно, чтобы избежать утопления в миллионах результатов поиска.
LIBCMT.LIB определяет такие функции, как memcpy, swprintf и т. Д., Которые являются функциями CRT. (C Runtime Library)
Я использую некоторые из этих функций в своем проекте. Итак, почему версия Debug и версия Release не работают?
Причина в том, что библиотека CRT требует инициализации, то есть код запуска, который должен вызываться один раз (обычно в течение _MAIN)
Если проект определяет _ATL_MIN_CRT код запуска CRT исключен из EXE, DLL в Релиз строит, чтобы уменьшить размер файла.
Зная это решение очень простое:
раствор А) Удалить _ATL_MIN_CRT из настроек проекта
Раствор Б) В конце файла stdafx.h поставить эту строку:
#undef _ATL_MIN_CRT
Это решило проблему.
Как я повторно использовать свой класс в других проектах, я ставлю на начало моего класса:
#ifdef _ATL_MIN_CRT
#error _ATL_MIN_CRT is not valid for this project
#endif
Это гарантирует, что повторное использование моего кода в другом проекте в будущем я буду предупрежден немедленно.
Elmü
Пробовал и работал. –
@Elmue - реорганизуйте это в Q & self-A пару, и я могу дать вам преимущество для него ... (два upvotes, даже;) – LThode
Вы правы. Я сделал это. – Elmue