Ошибка LNK1561: точка входа должна быть определена

Я работаю с Visual Studio 2012.

У моего решения есть 3 проекта

projectA

projectB

projectC

и Иерархия похожа на

projectC зависит от projectB, который, в свою очередь, зависит от projectA. В projectC есть основная функция, а в проектахB и projectA нет основной. Ошибки, которые я получаю, следующие:

error LNK1561: entry point must be defined      projectA
error LNK1561: entry point must be defined      projectB

Я попытался изменить в Свойства конфигурации → Linker → System → SubSystem to Console (/SUBSYSTEM: CONSOLE) Но проблема по-прежнему сохраняется

Помогите мне в этом.

Ответ 1

Кажется, вы неправильно поняли термин "модуль". В Visual Studio такого проекта С++ нет; Проекты на C++ можно разделить на три категории:

  • Программы - компиляция создает файл exe, который может быть выполнен;
  • Статические библиотеки - компиляция создает файл lib, который может быть включен в другой проект и связан во время компиляции;
  • Динамические библиотеки - компиляция создает файл dll, который может быть прикреплен к вашей программе во время выполнения и предоставляет дополнительные функции.

Из вашего описания вы хотите, чтобы projectB и projectC были статическими библиотеками, но вместо этого вы создали их как исполняемые файлы. Запустите новый мастер проекта и выберите "статическая библиотека" вместо "приложения Windows".

Подробнее о статических библиотеках можно узнать в библиотеке MSDN.

Если статические библиотеки слишком тяжелы для вашего приложения, вы можете просто включать файлы projectB и projectC в свой проект (необязательно заботиться о пространствах имен, чтобы не путать имена классов). Все зависит от того, сколько функций вы планируете реализовать в этих "модулях".

Ответ 2

установите Properties → Linker → System → SubSystem на "Windows (/SUBSYSTEM: WINDOWS)"

Ответ 3

Я собираюсь угадать, что вы используете Windows для создания этого проекта, для меня, если я обычно использую SDL, я получаю эту ошибку, все, что вам нужно сделать, это ввести этот #include <Windows.h>, который должен его исправить, если не тогда я не уверен, как это исправить.