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

Ошибка компоновщика LNK2019 - C++

Восстановить пароль Регистрация
 
Parallel_1986
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 4
11.09.2013, 17:35     Ошибка компоновщика LNK2019 #1
Здравствуйте, я постигаю DirectX, и вот с самого начала какие-то проблемы у меня с ним.
Текст программы инициализации:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <Windows.h>
#include <d3d9.h>
 
 
LPDIRECT3D9 pDirect3D = NULL;
LPDIRECT3DDEVICE9 pDirect3DDevice = NULL;
 
HRESULT InitialDirect3D(HWND hwnd)
{
    if(NULL==(pDirect3D=Direct3DCreate9(D3D_SDK_VERSION)))
        return E_FAIL;
 
    D3DDISPLAYMODE Display;
    if(FAILED(pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Display)))
        return E_FAIL;
 
    D3DPRESENT_PARAMETERS Direct3DParametr;
    ZeroMemory(&Direct3DParametr,sizeof(Direct3DParametr));
    Direct3DParametr.Windowed=TRUE;
    Direct3DParametr.SwapEffect=D3DSWAPEFFECT_DISCARD;
    Direct3DParametr.BackBufferFormat=Display.Format;
 
    if(FAILED(pDirect3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,
                                      hwnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                      &Direct3DParametr,&pDirect3DDevice)))
    return E_FAIL;
 
    return S_OK;
}
 
VOID RenderingDirect3D()
{
    if(pDirect3DDevice==NULL)
        return;
 
    pDirect3DDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,255,0),1.0f,0);
    pDirect3DDevice->BeginScene();
 
 
    pDirect3DDevice->EndScene();
    pDirect3DDevice->Present(NULL,NULL,NULL,NULL);
}
 
VOID DeleteDirect3D()
{
    if(pDirect3DDevice!=NULL)
        pDirect3DDevice->Release();
 
    if(pDirect3D!=NULL)
        pDirect3D->Release();
}
 
LRESULT CALLBACK MainWinProc(HWND hwnd,
                             UINT msg,
                             WPARAM wParam,
                             LPARAM lParam)
{
    switch(msg)
    {
    case WM_PAINT:
        RenderingDirect3D();
        ValidateRect(hwnd,NULL);
        break;
 
    case WM_DESTROY:
        DeleteDirect3D();
        PostQuitMessage(0);
        return (0);
        break;
    }
    return (DefWindowProc(hwnd,msg,wParam,lParam));
}
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hprevInstance,
                   LPSTR lpcmdLine,
                   int ncmdShow)
{
    WNDCLASSEX windowsclass;
    HWND hwnd;
    MSG msg;
 
    windowsclass.cbSize=sizeof(WNDCLASSEX);
    windowsclass.style=CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
    windowsclass.lpfnWndProc=MainWinProc;
    windowsclass.cbClsExtra=0;
    windowsclass.cbWndExtra=0;
    windowsclass.hInstance=hInstance;
    windowsclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    windowsclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    windowsclass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);
    windowsclass.lpszMenuName=NULL;
    windowsclass.lpszClassName="WINDOWSCLASS";
    windowsclass.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
    
    if(!RegisterClassEx(&windowsclass))
        return (0);
 
    if(!(hwnd=CreateWindowEx(NULL,"WINDOWSCLASS","Инициализация Direct X",
                             WS_OVERLAPPEDWINDOW|WS_VISIBLE,300,150,
                             500,400, NULL,NULL,hInstance,NULL)))
        return (0);
 
    if(SUCCEEDED(InitialDirect3D(hwnd)))
    {
        ShowWindow(hwnd,SW_SHOWDEFAULT);
        UpdateWindow(hwnd);
        while(GetMessage(&msg,NULL,0,0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
    return 0;
}
При попытке скомпилировать выходит следующее сообщение:
1>MSVCRTD.lib(wcrtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _wWinMain@16 в функции ___tmainCRTStartup

Указал компоновщику на библиотеки d3d9.lib и d3dx9.lib, не помогло, пробовал менять подсистему с windows на console, не помогло.

Что ещё можно попробовать сделать? среда VisualStudio 2010 Ultimate. Надеюсь на вашу помощь. Бьюсь уже дня 4
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2013, 17:35     Ошибка компоновщика LNK2019
Посмотрите здесь:

Ошибка LNK2019 C++
Ошибка LNK2019 C++
Ошибка LNK2019 C++
Ошибка LNK2019 C++
Ошибка LNK2019 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 02:33     Ошибка компоновщика LNK2019 #2
У меня, в 10 студии (Express), такая ошибка возникает, если выбрана консоль. Если выбрать widows (компоновщик - система) и указать компоновщику d3d9.lib (ввод - дополнительные зависимости), то компилируется и запускается без ошибок. Может тип проекта не тот? Я пробовал на пустом.
Parallel_1986
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 4
12.09.2013, 17:26  [ТС]     Ошибка компоновщика LNK2019 #3
Я пишу по книге, в ней используется visual studio 6, там так же все проекты создаются пустыми. Систему пробовал менять, не помогло.
Решил поменять точку входа на WinMain, заработало, видимо вся проблема была в этом, по умолчанию точка входа была wWinMainCRTStartup.
Спасибо, что пытались помочь
Кудаив
12.09.2013, 17:30
  #4

Не по теме:

а чего не DX11 ?))

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 17:49     Ошибка компоновщика LNK2019 #5
Цитата Сообщение от Parallel_1986 Посмотреть сообщение
Решил поменять точку входа на WinMain, заработало,
Это где поменяли?
Parallel_1986
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 4
19.09.2013, 17:29  [ТС]     Ошибка компоновщика LNK2019 #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Это где поменяли?
Правой кнопкой по проекту -> свойства, раскрываем список "компоновщик" -> дополнительно, первый пункт там "точка входа"
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 17:42     Ошибка компоновщика LNK2019 #7
Цитата Сообщение от Parallel_1986 Посмотреть сообщение
Правой кнопкой по проекту -> свойства, раскрываем список "компоновщик" -> дополнительно, первый пункт там "точка входа"
У вас там что-то было прописано? У меня там пусто. И как меняли: выбирали из предложенного или вручную прописывали?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2013, 15:34     Ошибка компоновщика LNK2019
Еще ссылки по теме:

C++ Ошибка LNK2019
C++ Ошибка LNK2019
C++ Ошибка компоновщика: ссылка на неразрешенный внешний символ

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

Или воспользуйтесь поиском по форуму:
Parallel_1986
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 4
20.09.2013, 15:34  [ТС]     Ошибка компоновщика LNK2019 #8
Цитата Сообщение от alsav22 Посмотреть сообщение
У вас там что-то было прописано? У меня там пусто. И как меняли: выбирали из предложенного или вручную прописывали?
У меня поумолчанию записано wWinMainCRTStartup, я вручную переписал на WinMain (тело программы)
Yandex
Объявления
20.09.2013, 15:34     Ошибка компоновщика LNK2019
Ответ Создать тему
Опции темы

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