forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Ошибка Link.exe-программитрование под Win32 (http://forum.boolean.name/showthread.php?t=5128)

DekaR 25.11.2007 19:08

Ошибка Link.exe-программитрование под Win32
 
Приветствую всех! Вот написал свою первую прогу на С++.Даже не прогу.ТИак.Тренировка навыков:
Код:

#include <windows.h>

LRESULT CALLBACK mesa(HWND,UINT,WPARAM,LPARAM);
char *wwinname="I`s works!";

int WINAPI WinMain(HINSTANCE hinst,HINSTANCE HPREV,LPSTR lpcl,int CmdShow){
HWND hWnd;
MSG msg;
WNDCLASS wc;
wc.hInstance=hinst;
wc.lpszClassName=wwinname;
wc.lpfnWndProc=mesa;
wc.style=0;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.lpszMenuName=NULL;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
if(!RegisterClass(&wc)) return 0;
hWnd=CreateWindow(wwinname,"My First Window!",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
                                  CW_USEDEFAULT,HWND_DESKTOP,NULL,hinst,NULL);
ShowWindow(hWnd,CmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg,NULL,0,0)){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
}return msg.wParam;
}

LRESULT CALLBACK mesa(HWND hWnd,UINT iMsg,WPARAM wParam,LPARAM lParam){
        switch(iMsg){
        case WM_DESTROY:
                PostQuitMessage(0);
                break;
        default:
                return DefWindowProc(hWnd,iMsg,wParam,lParam);
        }
        return 0;
}

Компиляция и билт проходит нормально,а вот когда запустить получаю пинок такого содержание :
Цитата:

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

Cpp1.exe - 2 error(s), 0 warning(s)
Что от меня хочет компилятор ?(компилятор-VC++ 6.0)

alcoSHoLiK 25.11.2007 20:31

Re: Ошибка Link.exe-программитрование под Win32
 
Ты виндоус приложение создал в мастере студии?

jimon 25.11.2007 20:53

Re: Ошибка Link.exe-программитрование под Win32
 
DekaR
в настройках проекта указана под консольная система
а в коде есть точка входа для оконного приложения

Alex_90 25.11.2007 20:54

Re: Ошибка Link.exe-программитрование под Win32
 
Ну на первую прогу это не похоже, Hello, World! не выводит, но все таки:
эта ошибка может возникать по следующим причинам:
невозможно производить запись (чтение) на диск (с диска)
сбой компилятора
не подключены необходимые библиотеки

если первые две причины, то перезагрузи винду и перезапусти Viusual Studio
если третья (это самое вероятное), то в зависимости от версии Visual Studio, библиотеки подключаюся по разному:
Visual Studio 6.0: заходить в меню Project->Settings->Link.
В строке "Objects\Liberalys moduls:" в конце через пробел добавляешь:opengl32.lib glaux.lib. После этого нажимаешь "OK".
Visual Studio 2005: заходишь в меню Project->"Название проекта"Properytys. В иерархическом списке слева выбираешь Configuration Properitys->Linker->Comand Line. В поле внизу окна вводишь: glu32.lib
opengl32.lib.
Нажимаешь "OK"

DekaR 25.11.2007 21:14

Re: Ошибка Link.exe-программитрование под Win32
 
Alex_90, до меня уже было там написано :
Цитата:

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
Дописал.Не помогло.


alcoSHoLiK,мне и нужно оконное чтобы создалось
Цитата:

в настройках проекта указана под консольная система
.А где поменять это ?

alcoSHoLiK,нет.Я создал исходник.Нажал билт он мне предожил создать воркспайс и все такое.нажал "да".Вот и все.
Запись на диск разрешена

Alex_90 25.11.2007 21:31

Re: Ошибка Link.exe-программитрование под Win32
 
Ну, правильно!
А те, что я написал, ты не добавил?;)

DekaR 25.11.2007 21:37

Re: Ошибка Link.exe-программитрование под Win32
 
Alex_90<добавил.Стало так :
Цитата:

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glaux.lib
,по прежмему.С компилом все нормально а вот билт и запуск не работает. :(

alcoSHoLiK 25.11.2007 21:38

Re: Ошибка Link.exe-программитрование под Win32
 
Зайди в настройки проекта. Это или меню Tools, или Project.
Найди в дереве свойств Linker. В подпункте найди System. Надо там поставить для Subsystem значение Windows.
А в пункте C\C++ в подпункте Preprocessor сотри _CONSOLE и вместо него напиши _WINDOWS.

А вообще, создай проект через визард, добавь в него исходник и не парь себе моск. В студии разработку всегда надо начинать с создания проекта.

DekaR 25.11.2007 21:56

Re: Ошибка Link.exe-программитрование под Win32
 
alcoSHoLiK,нашел в свойствах проекта закладку LInk, но ничего подобно там нет.Переписал на вкладке С/С++ переписал по твоему совету.Не работает :(.Создал проекта.Как пустой.он мне создал файлы заголовков и т.п. Перешел в пункт файлы,добавил на воркспайс свой исходник.И ...ОНО запустилось!!!!Всем спасибо.Но всеравно конечно интересно почему оно всетаки не работает если создавать без мастера ?

Alex_90 25.11.2007 22:37

Re: Ошибка Link.exe-программитрование под Win32
 
У тебя какая версия Visual Studio?;)

DekaR 25.11.2007 22:58

Re: Ошибка Link.exe-программитрование под Win32
 
6.0

Alex_90 25.11.2007 23:02

Re: Ошибка Link.exe-программитрование под Win32
 
Ну, ну: я твой код откомпилил - работает, окно выводит с надписью в заголовке, что типо, это твое первое окно. И еще восклицательный знак добавляет в конце!:)

Alex_90 25.11.2007 23:10

Re: Ошибка Link.exe-программитрование под Win32
 
Поробуй пересоздай проект по следующему алгоритму:
File->New->Projects->Win32Application(в поле "Project name" вводишь имя проекта, а в поле "Lovation" - путь, где его создать)->Finish->OK->меню Project->Add to Project->New->C++ Sourse File (в поле "File name" вводишь название проекта->Ok
Далее всавляешь в проект код, а потом добавляешь библиотеки, как я писал раньше и компилишь.:)

alcoSHoLiK 25.11.2007 23:41

Re: Ошибка Link.exe-программитрование под Win32
 
Я не помню, какие настройки в 6-й студии. Просто при создании проекта укажи, чтобы пустой создавало. Тогда никаких левых файлов не будет.

Alex_90 26.11.2007 00:03

Re: Ошибка Link.exe-программитрование под Win32
 
По умолчанию он и создается.:)


Часовой пояс GMT +4, время: 11:32.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot