Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемма с Dev-C++ 
V
    Опции темы
QueueZip
Дата 31.8.2007, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 29.8.2007

Репутация: нет
Всего: нет



Кто пользуется Dev-C++ помогите плз!
компилирую вот это:
Код

#include<windows.h>
int WINAPI WinMain
(HINSTANCE hInstance, WNDPROC Proc, LPCTSTR szName)
{
WNDCLASS wc;
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra=wc.cbWndExtra=0;
wc.lpfnWndProc=Proc; wc.hInstance= hInstance;
wc.hIcon=LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName=(LPCTSTR)NULL;
wc.lpszClassName=szName;
return RegisterClass(&wc);
}

а он отвечает:
Цитата

  [Linker error] undefined reference to `WinMain@16' 
  ld returned 1 exit status 

что делать?
PM MAIL   Вверх
NiJazz
Дата 31.8.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



QueueZip, создай лучше проект а ля Win32 Application с помощью мастера.
PM MAIL   Вверх
586
Дата 31.8.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(QueueZip @  31.8.2007,  11:12 Найти цитируемый пост)
int WINAPI WinMain(HINSTANCE hInstance, WNDPROC Proc, LPCTSTR szName)

странный какой-то прототип WinMain
Цитата(QueueZip @  31.8.2007,  11:12 Найти цитируемый пост)
 [Linker error] undefined reference to `WinMain@16' 

а у тебя WinMain@12. 
Код
#include<windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE, LPSTR, INT)
{
WNDCLASS wc;
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra=wc.cbWndExtra=0;
wc.lpfnWndProc=Proc; wc.hInstance= hInstance;
wc.hIcon=LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName=(LPCTSTR)NULL;
wc.lpszClassName=szName;
return RegisterClass(&wc);

}

PM   Вверх
QueueZip
Дата 4.9.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 29.8.2007

Репутация: нет
Всего: нет



проект создавал, никаких изменений. 586, на твой код реагирует также как на исходный. 
чем странен прототип?
PM MAIL   Вверх
NiJazz
Дата 4.9.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Цитата

чем странен прототип? 

Тем, что требует указателя на оконную процедуру.
Вот нормальный прототип функции:
Код

int WINAPI WinMain(
  HINSTANCE hInstance, 
  HINSTANCE hPrevInstance, 
  LPWSTR lpCmdLine, 
  int nShowCmd 
); 

PM MAIL   Вверх
EnergoHokum
Дата 4.9.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: 3
Всего: 6



Код

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
ATOM RegMyWindowClass(HINSTANCE,LPCTSTR);

int APIENTRY WinMain(HINSTANCE hInstance,
                                         HINSTANCE hPrevInstance,
                                         LPSTR lpCmdLine,
                                         int nCmdShow)
{
    LPCTSTR lpzClass=TEXT("My window class");
    
    if(!RegMyWindowClass(hInstance,lpzClass))
        return 1;

    RECT screen_rect;
    GetWindowRect(GetDesktopWindow(),&screen_rect);
    int x=(screen_rect.right/2)-150;
    int y=(screen_rect.bottom/2)-75;

    HWND hWnd=CreateWindow(lpzClass,
                                                 TEXT("Dialog window"),
                                                 WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                                                 x,y,
                                                 300,150,
                                                 NULL,NULL,
                                                 hInstance,NULL);

    if(!hWnd)
        return 2;

    MSG msg={0};
    int iGetOK=0;
    while((iGetOK=GetMessage(&msg,NULL,0,0)))
    {
        if(iGetOK == -1)
            return 3;
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

ATOM RegMyWindowClass(HINSTANCE hInst,LPCTSTR lpzClassName)
{
    //MessageBox(NULL,"Trace","Trace",MB_OK);
    WNDCLASS wcWindowClass={0};
    wcWindowClass.lpfnWndProc=(WNDPROC)WndProc;
    wcWindowClass.style=CS_HREDRAW | CS_VREDRAW;
    wcWindowClass.hInstance=hInst;
    wcWindowClass.lpszClassName=lpzClassName;
    wcWindowClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wcWindowClass.hbrBackground=(HBRUSH)COLOR_APPWORKSPACE;
    return RegisterClass(&wcWindowClass);
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    switch(message)
    {
    case WM_LBUTTONUP:
        MessageBox(hWnd,"Left mouse button clicked","Click",MB_OK);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd,message,wParam,lParam);
    }
    return 0;
}

Попробуй ^
PM MAIL ICQ   Вверх
QueueZip
Дата 5.9.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 29.8.2007

Репутация: нет
Всего: нет



Все работает, большое всем спасибо.
PM MAIL   Вверх
fair7
Дата 20.12.2014, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.1.2012

Репутация: нет
Всего: нет



А у меня не работает, компилятор Dev C++ 4.9.9.2  

[Linker error] undefined reference to `WinMain@16' 
ld returned 1 

Прошу прощения, это у меня не хватало места на диске.

Это сообщение отредактировал(а) fair7 - 21.12.2014, 00:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.