Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Проблема c компиляцией Win32 Application.


Автор: yparaHbI4 8.10.2006, 14:27
Здравствуйте. Взялся за изучение WinAPI и сразу же столкнулся
с проблемой: создаю я в VS6 Win32 Application, копирую туда
вот этот код(взятый из статьи камрада Fixin'а):

Код

#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
    MessageBox(NULL, "Сказала собака баскервилей.", "Ну, здравствуй, Герасим.", MB_OK|MB_ICONEXCLAMATION);
    return 0;
}


Всё прекрасно работает. Но если я выйду из VS, открою проект снова
и попытаюсь его скомпилировать, то выскакивают две ошибки:

Код

--------------------Configuration: Oops - Win32 Debug--------------------
Compiling...
Oops.cpp
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Oops.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Oops.exe - 2 error(s), 0 warning(s)


Подскажите, пожалуйста, что делать? smile 

Автор: Friackazoid 8.10.2006, 15:35
Э-э что значит выйду из VC и пытаюсь его скомпилировать?

А в чем пытаешься скомпилировать-то? 

Судя из того что я поняла, то ты создаешь консольных проект, и компилируешь в нем проект Windows Application. 

Ты либо в VC выбери проект Win32Apllication и в функцию WinMain вставь код мессаджа

Автор: yparaHbI4 8.10.2006, 15:45
Согласен, не совсем понятно описал проблему:
просто закрываю проект, потом открываю его и
выскакивают ошибки.  А почему ты решила,
что я создаю консольный проект?
Я создаю как раз таки Win32 Application проект. 

Автор: yparaHbI4 8.10.2006, 20:43
Хорошо, несколько изменим вопрос:
почему эту тему просмотрело уже 18 человек,
а ответила только Friackazoid. В чём проблема? 

Автор: GremlinProg 8.10.2006, 21:45
проблемы нет, вот ни кто и не отвечает.
 unresolved external symbol _main означает, что _main объявлена, но не описана, но main присутствует обычно только в Console Application, так что Friackazoid права

Автор: yparaHbI4 8.10.2006, 23:05
Хм-м-м... smile  Что-то понял, что то не совсем,
но в принципе разобрался, так что теперь всё работает.
Спасибо всем, кто хотел помочь  smile 

Автор: Earnest 9.10.2006, 10:38
Цитата(GremlinProg @  8.10.2006,  22:45 Найти цитируемый пост)
main присутствует обычно только в Console Application

main присутствует всегда... только в гуевых приложениях она стандартная и вызывает WinMain, т.е. программист ее не пишет и не видит

Автор: GremlinProg 9.10.2006, 11:48
поэтому и пишу ОБЫЧНО. В конечном счете, стартовую процедуру можно назвать как хошь, это не имеет значения. Но судя по первому посту:
Цитата(yparaHbI4 @  8.10.2006,  16:27 Найти цитируемый пост)
Взялся за изучение WinAPI

можно сделать вывод, что человек не лезет в дебри RunTime установок и настроек проекта.

Добавлено @ 11:59 
mainCRTStartup - это стартовый метод в базовой crt0.c и для main и для WinMain. Если _WINMAIN_ определен, то вызывается WinMain, иначе main. Это решается на уровне препроцессора.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)