Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

error LNK2019

57K
07 сентября 2010 года
rusek
16 / / 12.07.2010
Решил начать изучение WinApi и сразу же столкнулся с проблемой. При компиляции программы выдается ошибка:
 
Код:
error LNK2019: unresolved external symbol "unsigned short __cdecl RegMyWindowClass(struct HINSTANCE__ *,char const *)" (?RegMyWindowClass@@YAGPAUHINSTANCE__@@PBD@Z) referenced in function _WinMain@16


Код самой программы:
Код:
#include <windows.h>

// объявление функций
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM RegMyWindowClass(HINSTANCE, LPCTSTR);

//////////////////////////////////////////////////////////////////////////
// функция вхождений программы WinMain
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);

    // если окно не создано, описатель будет равен 0
    if(!hWnd) return 2;

    //цикл сообщений приложения
    MSG msg = {0};    //структура сообщения
    int iGetOk = 0;   //переменная состояния
    while ((iGetOk = GetMessage(&msg, NULL, 0, 0 )) != 0) //цикл сообщений
    {
        //если GetMessage вернул ошибку - выход
        if (iGetOk == -1) return 3;
        TranslateMessage(&msg);    
        DispatchMessage(&msg);
    }
    return 0;
}

//////////////////////////////////////////////////////////////////////////
// функция обработки сообщений
LRESULT CALLBACK WndProc(
  HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    // выборка и обработка сообщений
    switch (message)
    {
    case WM_LBUTTONUP:
        // реакция на сообщение
        MessageBox(hWnd, TEXT("Вы кликнули!"), TEXT("событие"), 0);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);  // реакция на сообщение
        break;
    default:  
        // все сообщения не обработанные Вами обработает сама Windows
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

//////////////////////////////////////////////////////////////////////////
ATOM RegMyWindowClass(HINSTANCE hInst, LPSTR lpzClassName)
{
    WNDCLASSEX 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 RegisterClassEx(&wcWindowClass);
}


Какую библиотеку необходимо подключить или что изменить в свойствах проекта?
7
07 сентября 2010 года
@pixo $oft
3.4K / / 20.09.2006
Если проект тот,что по умолчанию,никаких ошибок не должно быть.Рекомендуется делать свои по аналогии.Кстати,версия VS какая?

Единственное,что в глаза бросилось–это разница параметров в объвлении функций и их реализации.Посмотрите внимательнее
[COLOR="Gray"][SIZE="1"](хм,можно описывать функции только с типами в качестве параметров?)[/SIZE][/COLOR]
297
07 сентября 2010 года
koodeer
1.2K / / 02.05.2009
To rusek
Как верно заметил @pixo $oft, не совпадают типы в объявлении и реализации функции. Нужно заменить LPSTR на LPCTSTR. После этого должно скомпилироваться. Только этого мало: в коде не хватает важных составляющих :).


To @pixo $oft
> (хм,можно описывать функции только с типами в качестве параметров?)
Можно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог