Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
kenshun
1 / 1 / 0
Регистрация: 19.10.2015
Сообщений: 34
Завершенные тесты: 1
1

Visual c++ Ошибка 1 error LNK2028: ссылка на неразрешенную лексему (0A00004B)

21.10.2015, 14:55. Просмотров 707. Ответов 4
Метки нет (Все метки)

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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
//--------------------------------------------------------------------------------------
// Урок 1. Создание устройств Direct3D11. Основан на примере из SDK (c) Microsoft Corp.
//--------------------------------------------------------------------------------------
#include <windows.h>
#include <d3d11.h>
#include <d3dx11.h>
#pragma comment (lib,"d3d11.lib")
#pragma comment (lib,"d3dx11.lib")
 
//--------------------------------------------------------------------------------------
// Глобальные переменные
//--------------------------------------------------------------------------------------
HINSTANCE               g_hInst = NULL;
HWND                    g_hWnd = NULL;
D3D_DRIVER_TYPE         g_driverType = D3D_DRIVER_TYPE_NULL;
D3D_FEATURE_LEVEL       g_featureLevel = D3D_FEATURE_LEVEL_11_0;
ID3D11Device*           g_pd3dDevice = NULL;        // Устройство (для создания объектов)
ID3D11DeviceContext*    g_pImmediateContext = NULL; // Контекст устройства (рисование)
IDXGISwapChain*         g_pSwapChain = NULL;        // Цепь связи (буфера с экраном)
ID3D11RenderTargetView* g_pRenderTargetView = NULL; // Объект заднего буфера
 
 
//--------------------------------------------------------------------------------------
// Предварительные объявления функций
//--------------------------------------------------------------------------------------
HRESULT InitWindow( HINSTANCE hInstance, int nCmdShow );  // Создание окна
HRESULT InitDevice();   // Инициализация устройств DirectX
void CleanupDevice();   // Удаление созданнных устройств DirectX
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );   // Функция окна
void Render();  // Функция рисования
 
 
//--------------------------------------------------------------------------------------
// Точка входа в программу. Здесь мы все инициализируем и входим в цикл сообщений.
// Время простоя используем для вызова функции рисования.
//--------------------------------------------------------------------------------------
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow )
{
    UNREFERENCED_PARAMETER( hPrevInstance );
    UNREFERENCED_PARAMETER( lpCmdLine );
 
    if (FAILED(InitWindow(hInstance, nCmdShow)))
        return 0;
 
    if (FAILED(InitDevice()))
    {
        CleanupDevice();
        return 0;
    }
 
    // Главный цикл сообщений
    MSG msg = {0};
    while( WM_QUIT != msg.message )
    {
        if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
        {
            TranslateMessage( &msg );
            DispatchMessage( &msg );
        }
        else    // Если сообщений нет
        {
            Render();   // Рисуем
        }
    }
 
    CleanupDevice();
    return ( int )msg.wParam;
}
 
 
//--------------------------------------------------------------------------------------
// Регистрация класса и создание окна
//--------------------------------------------------------------------------------------
HRESULT InitWindow( HINSTANCE hInstance, int nCmdShow )
{
    // Регистрация классa
    WNDCLASSEX wcex;
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = NULL;
    wcex.hCursor = LoadCursor (NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = L"Urok01WindowClass";
   
    if (!RegisterClassEx(&wcex))
        return E_FAIL;
 
    // Создание окна
    g_hInst = hInstance;
    RECT rc = { 0, 0, 320, 210 };
    AdjustWindowRect (&rc, WS_OVERLAPPEDWINDOW, FALSE);
    g_hWnd = CreateWindow (L"Urok01WindowClass", L"Урок 1: Создание устройств Direct3D", WS_OVERLAPPEDWINDOW,
                           CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL );
    if (!g_hWnd)
        return E_FAIL;
 
    ShowWindow (g_hWnd, nCmdShow);
    return S_OK;
}
 
 
//--------------------------------------------------------------------------------------
// Вызывается каждый раз, когда приложение получает сообщение
//--------------------------------------------------------------------------------------
LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
    PAINTSTRUCT ps;
    HDC hdc;
 
    switch( message )
    {
        case WM_PAINT:
            hdc = BeginPaint( hWnd, &ps );
            EndPaint( hWnd, &ps );
            break;
 
        case WM_DESTROY:
            PostQuitMessage( 0 );
            break;
 
        default:
            return DefWindowProc( hWnd, message, wParam, lParam );
    }
 
    return 0;
}
 
 
//--------------------------------------------------------------------------------------
// Создание устройств Direct3D: девайса, контекста и цепи связи
//--------------------------------------------------------------------------------------
HRESULT InitDevice()
{
    HRESULT hr = S_OK;
 
    RECT rc;
    GetClientRect( g_hWnd, &rc );
    UINT width = rc.right - rc.left;    // получаем ширину
    UINT height = rc.bottom - rc.top;   // и высоту окна
    UINT createDeviceFlags = 0;
 
    // Видите ли Микрософт создает учебные примеры таким образом, что код, который можно 
    // написать одной строчкой, превращается в десять. Массив ниже используется просто
    // для того, чтобы выяснить, какой режим обработки 3D поддерживает анш компьютер.
    // Ниже мы проходимся по этому массиву и пытаемся создать устройство. Если произошла
    // ошибка, пробуем следующий тип. Всё примитивно, но поскольку сейчас все компьютеры
    // поддерживают хардварную обработку, в учебном примере этот код совершенно лишний.
    // Удачи, и спасибо за рыбу.
    D3D_DRIVER_TYPE driverTypes[] =
    {
        D3D_DRIVER_TYPE_HARDWARE,
        D3D_DRIVER_TYPE_WARP,
        D3D_DRIVER_TYPE_REFERENCE,
    };
    UINT numDriverTypes = ARRAYSIZE( driverTypes );
 
    // Тут мы создаем список поддерживаемых версий DirectX
    D3D_FEATURE_LEVEL featureLevels[] =
    {
        D3D_FEATURE_LEVEL_11_0,
        D3D_FEATURE_LEVEL_10_1,
        D3D_FEATURE_LEVEL_10_0,
    };
    UINT numFeatureLevels = ARRAYSIZE( featureLevels );
 
    // Сейчас мы создадим устройства DirectX. Для начала заполним структуру,
    // которая описывает свойства переднего буфера и привязывает его к нашему окну.
    DXGI_SWAP_CHAIN_DESC sd;        // Структура, описывающая цепь связи (Swap Chain)
    ZeroMemory( &sd, sizeof( sd ) );    // очищаем ее
    sd.BufferCount = 1;                 // у нас один задний буфер
    sd.BufferDesc.Width = width;        // ширина буфера
    sd.BufferDesc.Height = height;      // высота буфера
    sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;  // формат пикселя в буфере
    sd.BufferDesc.RefreshRate.Numerator = 75;           // частота обновления экрана
    sd.BufferDesc.RefreshRate.Denominator = 1;
    sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;   // назначение буфера - задний буфер
    sd.OutputWindow = g_hWnd;                           // привязываем к нашему окну
    sd.SampleDesc.Count = 1;
    sd.SampleDesc.Quality = 0;
    sd.Windowed = TRUE;                     // не полноэкранный режим
 
    for( UINT driverTypeIndex = 0; driverTypeIndex < numDriverTypes; driverTypeIndex++ )
    {
        g_driverType = driverTypes[driverTypeIndex];
        hr = D3D11CreateDeviceAndSwapChain ( NULL, g_driverType, NULL, createDeviceFlags, featureLevels, numFeatureLevels,
                                            D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &g_featureLevel, &g_pImmediateContext );
        if (SUCCEEDED(hr)) // Если устройства созданы успешно, то выходим из цикла
            break;
    }
    if (FAILED(hr))
        return hr;
 
    // Теперь создаем задний буфер. Обратите внимание, в SDK
    // RenderTargetOutput - это передний буфер, а RenderTargetView - задний.
    ID3D11Texture2D* pBackBuffer = NULL;
    hr = g_pSwapChain->GetBuffer( 0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer );
    if (FAILED(hr)) return hr;
 
    // Я уже упоминал, что интерфейс g_pd3dDevice будет
    // использоваться для создания остальных объектов
    hr = g_pd3dDevice->CreateRenderTargetView( pBackBuffer, NULL, &g_pRenderTargetView );
    pBackBuffer->Release();
    if (FAILED(hr)) return hr;
 
    // Подключаем объект заднего буфера к контексту устройства
    g_pImmediateContext->OMSetRenderTargets( 1, &g_pRenderTargetView, NULL );
 
    // Настройка вьюпорта
    D3D11_VIEWPORT vp;
    vp.Width = (FLOAT)width;
    vp.Height = (FLOAT)height;
    vp.MinDepth = 0.0f;
    vp.MaxDepth = 1.0f;
    vp.TopLeftX = 0;
    vp.TopLeftY = 0;
    // Подключаем вьюпорт к контексту устройства
    g_pImmediateContext->RSSetViewports (1, &vp);
 
    return S_OK;
}
 
 
//--------------------------------------------------------------------------------------
// Рисование кадра
//--------------------------------------------------------------------------------------
void Render()
{
    // Просто очищаем задний буфер
    float ClearColor[4] = { 0.0f, 0.0f, 1.0f, 1.0f }; // красный, зеленый, синий, альфа-канал
    g_pImmediateContext->ClearRenderTargetView( g_pRenderTargetView, ClearColor );
    // Выбросить задний буфер на экран
    g_pSwapChain->Present( 0, 0 );
}
 
 
//--------------------------------------------------------------------------------------
// Удалить все созданные объекты
//--------------------------------------------------------------------------------------
void CleanupDevice()
{
    // Сначала отключим контекст устройства, потом отпустим объекты.
    if( g_pImmediateContext ) g_pImmediateContext->ClearState();
    // Порядок удаления имеет значение. Обратите внимание, мы создавали
    // эти объекты в обратном порядке.
    if( g_pRenderTargetView ) g_pRenderTargetView->Release();
    if( g_pSwapChain ) g_pSwapChain->Release();
    if( g_pImmediateContext ) g_pImmediateContext->Release();
    if( g_pd3dDevice ) g_pd3dDevice->Release();
}

выдает такие ошибки:
Кликните здесь для просмотра всего текста
Ошибка 1 error LNK2028: ссылка на неразрешенную лексему (0A00004B) "extern "C" long __stdcall D3D11CreateDeviceAndSwapChain(struct IDXGIAdapter *,enum D3D_DRIVER_TYPE,struct HINSTANCE__ *,unsigned int,enum D3D_FEATURE_LEVEL const *,unsigned int,unsigned int,struct DXGI_SWAP_CHAIN_DESC const *,struct IDXGISwapChain * *,struct ID3D11Device * *,enum D3D_FEATURE_LEVEL *,struct ID3D11DeviceContext * *)" (?D3D11CreateDeviceAndSwapChain@@$$J248YGJPAUIDXGIAdapter@@W4D3D_DRIVER_TYPE@@PAUHINSTANCE__@@IPBW4D3D_FEATURE_LEVEL@@II PBUDXGI_SWAP_CHAIN_DESC@@PAPAUIDXGISwapChain@@PAPAUID3D11Device@@PAW44@PAPAUID3D11DeviceContext@@@Z) в функции "long __cdecl InitDevice(void)" (?InitDevice@@$$FYAJXZ)

Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "extern "C" long __stdcall D3D11CreateDeviceAndSwapChain(struct IDXGIAdapter *,enum D3D_DRIVER_TYPE,struct HINSTANCE__ *,unsigned int,enum D3D_FEATURE_LEVEL const *,unsigned int,unsigned int,struct DXGI_SWAP_CHAIN_DESC const *,struct IDXGISwapChain * *,struct ID3D11Device * *,enum D3D_FEATURE_LEVEL *,struct ID3D11DeviceContext * *)" (?D3D11CreateDeviceAndSwapChain@@$$J248YGJPAUIDXGIAdapter@@W4D3D_DRIVER_TYPE@@PAUHINSTANCE__@@IPBW4D3D_FEATURE_LEVEL@@II PBUDXGI_SWAP_CHAIN_DESC@@PAPAUIDXGISwapChain@@PAPAUID3D11Device@@PAW44@PAPAUID3D11DeviceContext@@@Z) в функции "long __cdecl InitDevice(void)" (?InitDevice@@$$FYAJXZ) C:\Users\лдго\documents\visual studio 2010\Projects\dsad\dsad\фыв.obj
Ошибка 3 error LNK1120: 2 неразрешенных внешних элементов
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2015, 14:55
Ответы с готовыми решениями:

Ошибка в коде - Ссылка на неразрешенную лексему
Есть код, есть ошибка, в чем проблема понять не могу. 1&gt;АЛГОРИТМ.obj : error...

Ссылка на неразрешенную лексему
Доброе время суток, у меня возникла такая проблема // ------ Построение...

Ссылка на неразрешенную лексему при работе с шаблоном
Никак не могу понять с чем связанна эта ошибка error LNK2028: ссылка на...

Error LNK1120, error LNK2019, error LNK2028, queue
// свойство класса Parser queue&lt;elem*&gt;* postfix = new queue&lt;elem*&gt;; //...

Ссылка на неразрешённую лексему, что это?
Да, что? Иногда бывает такая ошибка. Методом научного тыка не хочется...

4
Barrent
21.10.2015, 18:43
  #2

Не по теме:


Цитата Сообщение от kenshun Посмотреть сообщение
C:\Users\лдго\documents\visual studio 2010\Projects\dsad\dsad\фыв.obj
Это восхитительно :D

0
kenshun
1 / 1 / 0
Регистрация: 19.10.2015
Сообщений: 34
Завершенные тесты: 1
21.10.2015, 19:06  [ТС] 3
Что тут такого?
0
hoggy
Заблокирован
Эксперт С++
21.10.2015, 19:46 4
Цитата Сообщение от kenshun Посмотреть сообщение
выдает такие ошибки:
может у вас винда старенькая?

This entry-point is supported by the Direct3D 11 runtime, which is available on Windows 7, Windows Server 2008 R2, and as an update to Windows Vista (KB971644).
To create a Direct3D 11.1 device (ID3D11Device1), which is available on Windows 8, Windows Server 2012, and Windows 7 and Windows Server 2008 R2 with the Platform Update for Windows 7 installed, you first create a ID3D11Device with this function, and then call the QueryInterface method on the ID3D11Device object to obtain the ID3D11Device1 interface.
To create a Direct3D 11.2 device (ID3D11Device2), which is available on Windows 8.1 and Windows Server 2012 R2, you first create a ID3D11Device with this function, and then call the QueryInterface method on the ID3D11Device object to obtain the ID3D11Device2 interface.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
0
kenshun
1 / 1 / 0
Регистрация: 19.10.2015
Сообщений: 34
Завершенные тесты: 1
21.10.2015, 20:05  [ТС] 5
windows 7 максимальная
0
21.10.2015, 20:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2015, 20:05

error lnk2028 unresolved token extern c
Здравствуйте. При компиляции такого примера// Test6.cpp : main project file. ...

Error LNK2028, LNK2019, LNK1120: 2 неразрешенных внешних элементов
Всем привет. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt;...

Ошибка LNK2028, MD5
Всем доброго времени суток, есть код: #include &quot;stdafx.h&quot; #include...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru