Форум программистов, компьютерный форум CyberForum.ru

Приложение без консоли - C++

Восстановить пароль Регистрация
 
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
06.04.2013, 10:05     Приложение без консоли #1
Всем привет. Я решил сделать программу без консоли, которая висит при работе компьютера и удаляет autorun с флешки.

Не по теме:

Забегая на перед, хочу сказать, что эта ошибка меня задолбала уже.


Создал проект в Visual Studio 2010 -> Win32 Project -> и поставил галочку на Empty Project. Все норм. Проект создался, после чего я создал в Source Files файл main.cpp и ввел в него следующее:

C++
1
2
3
4
5
#include <Windows.h>
 
int main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPCSTR lpszCmdLine, int CmdShow)
{
}
Попытался скомпилить и вот что пишет:
Цитата Сообщение от Компилятор 2010
1>ManifestResourceCompile:
1> All outputs are up-to-date.
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
1>D:\Prog\1\1\Debug\1.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
Я не знаю как это исправить и подумал, что если создать Empty Project, то приложение также должно быть без консоли.
Я вставил этот код в Empty Project и вуаля - он сколмпилился. Запускаю, а там... консоль!

Почему появилась Link Error? Как ее исправить? И почему в Empty Project появилась консоль?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.04.2013, 11:37     Приложение без консоли #2
Dani, точку входа прописать надо в проекте. В пустом проекте main() не прописана.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
06.04.2013, 11:42  [ТС]     Приложение без консоли #3
Tulosba, можно подробнее? И как ее прописать?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.04.2013, 11:55     Приложение без консоли #4
Dani, свойства проекта, линкер, advanced, entry point. емнип.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
06.04.2013, 12:00  [ТС]     Приложение без консоли #5
Tulosba, а почему тогда просто Empty Project запустился?

Добавлено через 2 минуты
И что там прописать конкретно?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.04.2013, 12:10     Приложение без консоли #6
Dani, если указать в linker-system-subsystem (Windows), то консоли не будет. Но нужно дополнительно указать точку входа. Т.е. просто прописать слово (main) по пути, указанному ранее (линкер, advanced, entry point.)
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
06.04.2013, 12:20  [ТС]     Приложение без консоли #7
Т.е. в точке входа указывается файл сpp из которого и нужно начинать запуск, линку и т.д. ?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.04.2013, 12:47     Приложение без консоли #8
Dani, не файл, а имя функции, которое должен линкер увидеть.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.04.2013, 13:39     Приложение без консоли #9
C++
1
2
3
4
5
#include <Windows.h>
 
int main()
{
}
Цитата Сообщение от Dani Посмотреть сообщение
И что там прописать конкретно?
/entry:mainCRTStartup
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2013, 14:09     Приложение без консоли
Еще ссылки по теме:

C++ Как по-настоящему обучиться c++ без привязок(винапи,.) то есть чистому языку но и не консоли
Считать числа с консоли без использования массива (рекурсивно) C++
C++ Консольное приложение C++ без использования vcredist

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
palva
 Аватар для palva
2373 / 1595 / 190
Регистрация: 08.06.2007
Сообщений: 6,364
Записей в блоге: 4
06.04.2013, 14:09     Приложение без консоли #10
Dani, Вы все правильно сделали с самого начала. Создаете пустое Windows приложение и в программе пишете:
C++
1
2
3
4
5
6
#include <Windows.h>
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR, int)
{
    return 0;
}
Добавлено через 3 минуты
Только не создавайте консольное приложение.
Yandex
Объявления
06.04.2013, 14:09     Приложение без консоли
Ответ Создать тему
Опции темы

Текущее время: 08:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru