Visual studio точка входа должна быть определена

У меня есть исходный код проекта Visual Studio C++. Проект содержит файлы cpp и заголовки исходного проекта. Эти файлы находятся в разных папках и вложенных папках. Однако основная функция существует в каталоге по умолчанию. Я хочу создать новый проект и добавить код.

Однако я не знаю, что именно я должен сделать, чтобы построить проект. Во-первых, я создаю пустой проект C++. Следующий шаг для добавления файлов.cpp и.h файлов. Должен ли я добавлять файлы проекта stdafx? Как добавить код в подпапки в новом проекте?

EDIT: Я следую инструкциям TobiMcNamobi. Я добавляю существующие элементы из проекта решения. Проект создает все файлы. Однако я получаю сообщение об ошибке:

Что означает эта ошибка? Я проверил следующую ссылку, она говорит, что, возможно, не ясно, является ли новый проект Win32 Project вместо консоли. Однако я создал пустой проект? Должен ли я превратиться в проект консоли?

EDIT2: Я добавляю все зависимости и все файлы. Проблема в том, что я столкнулся со следующей ошибкой:

error LNK2005: "public: static class cv :: Mat __cdecl CmSaliencyRC. уже определен в.obj

Это немного зависит от того, что вы хотите и сколько у вас исходного кода.

Вы хотите работать над проектом в целом с помощью Visual Studio? И у проекта есть много исходных файлов? Затем я поместил бы каждый файл.cpp и.h в проект VS. Да, stdafx.cpp и.h и все подкаталоги.

Вы хотите что-то конкретное, определенную часть проекта, и у вас есть только несколько исходных файлов? Затем вы должны начать с тех файлов, которые вам нужны, и добавить файлы, когда увидите, что они тоже нужны.

Добавление файлов в проект VS — это просто щелчок правой кнопкой мыши по проекту (в обозревателе решений), выберите "Добавить"/"Существующий элемент". Появится диалоговое окно выбора файла, выберите все файлы, которые вы хотите добавить из любого подкаталога.

Читайте также:  Need for speed 2015 карта трофеев

Я признаю, что я не знаю элегантного способа сделать это, если у вас много каталогов.

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

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

Projecta

projectB

projectC

projectC зависит от projectB которые в свою очередь зависят от Projecta. Eсть основная функция в projectC и нет основного в projectB и projectA.
Ошибки, которые я получаю:

Я пытался изменить в
Свойства конфигурации -> Линкер -> Система -> Подсистема в консоль (/ SUBSYSTEM: CONSOLE) Но проблема все еще сохраняется

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

Решение

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

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

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

Вы можете прочитать больше о статических библиотеках в Библиотека MSDN .

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

Другие решения

установите Свойства -> Компоновщик -> Система -> Подсистема на «Windows (/ SUBSYSTEM: WINDOWS)»

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

Читайте также:  Pci ven 1102 dev 7003 subsys 00401102

точка входа должен быть определен entry point must be defined

Не удалось найти компоновщик точки входа, начальной функции, вызываемой в исполняемом файле. The linker did not find an entry point, the initial function to call in your executable. По умолчанию компоновщик ищет main или wmain функцию для консольного приложения, WinMain или wWinMain функции для приложения Windows или DllMain для библиотеки DLL, требующему инициализации. By default, the linker looks for a main or wmain function for a console app, a WinMain or wWinMain function for a Windows app, or DllMain for a DLL that requires initialization. Можно указать другую функцию с помощью /Entry параметр компоновщика. You can specify another function by using the /ENTRY linker option.

Эта ошибка может иметь несколько причин: This error can have several causes:

  • Возможно, не включен файл, который определяет точку входа в список файлов для связывания. You may not have included the file that defines your entry point in the list of files to link. Убедитесь, что связанного файла, содержащего функцию точки входа в приложение. Verify that the file that contains the entry point function is linked into your app.
  • Определенные точки входа, с помощью подписи неправильной функции; Например вы может опечатка или использовать неправильного регистра для имени функции или неправильно указан тип возвращаемого значения или типы параметров. You may have defined the entry point using the wrong function signature; for example, you may have misspelled or used the wrong case for the function name, or specified the return type or parameter types incorrectly.
  • Не указан /DLL параметра при построении библиотеки DLL. You may not have specified the /DLL option when building a DLL.
  • Может указано имя функции точки входа неправильно при использовании /Entry параметр компоновщика. You may have specified the name of the entry point function incorrectly when you used the /ENTRY linker option.
  • Если вы используете LIB инструмент для создания библиотеки DLL, составить DEF-файла. If you are using the LIB tool to build a DLL, you may have specified a .def file. Если Да, удалите DEF-файл из сборки. If so, remove the .def file from the build.
Читайте также:  Acdsee commander intouch что это

При создании приложения, компоновщик будет искать функцию точки входа для вызова для запуска кода. When building an app, the linker looks for an entry point function to call to start your code. Это функция, которая вызывается после того как приложение загружается и инициализируется среда выполнения. This is the function that is called after the app is loaded and the runtime is initialized. Необходимо указать функцию точки входа для приложения, или не может выполняться приложение. You must supply an entry point function for an app, or your app can’t run. Точкой входа является необязательным для библиотеки DLL. An entry point is optional for a DLL. По умолчанию компоновщик ищет функцию точки входа, имеет одно из определенных имена и подписи, например int main(int, char**) . By default, the linker looks for an entry point function that has one of several specific names and signatures, such as int main(int, char**) . Можно указать другое имя функции в качестве записи точки с помощью параметра компоновщика/ENTRY. You can specify another function name as the entry point by using the /ENTRY linker option.

Пример Example

Следующий пример приводит к возникновению ошибки LNK1561: The following sample generates LNK1561:

Rate this post

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *