Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
 Аватар для Klawg
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 45

Ошибка при компилировании с DirectX

17.09.2011, 22:08. Показов 3137. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Проблема заключается в следующем: при компилировании вот этого исходника

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
#include "stdafx.h"
#include "Tutorial-01.h"
#include <d3d9.h>
#include <d3dx9.h>
 
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
 
#define MAX_LOADSTRING 100
 
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Tutorial-01.rc
//
 
#define IDS_APP_TITLE                   103
 
#define IDR_MAINFRAME                   128
#define IDD_TUTORIAL01_DIALOG   102
#define IDD_ABOUTBOX                    103
#define IDM_ABOUT                               104
#define IDM_EXIT                                105
#define IDI_TUTORIAL01                  107
#define IDI_SMALL                               108
#define IDC_TUTORIAL01                  109
#define IDC_MYICON                              2
#ifndef IDC_STATIC
#define IDC_STATIC                              -1
#endif
// Следующие стандартные значения для новых объектов
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
 
#define _APS_NO_MFC                                     130
#define _APS_NEXT_RESOURCE_VALUE        129
#define _APS_NEXT_COMMAND_VALUE         32771
#define _APS_NEXT_CONTROL_VALUE         1000
#define _APS_NEXT_SYMED_VALUE           110
#endif
#endif
 
// Global Variables:
HINSTANCE hInst = NULL;                                                 // current instance
HWND hMainWnd = NULL;
TCHAR szTitle[MAX_LOADSTRING];                                  // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];                    // the main window class name
 
// Forward declarations of functions included in this code module:
ATOM                            MyRegisterClass(HINSTANCE hInstance);
BOOL                            InitInstance(HINSTANCE, int);
LRESULT CALLBACK        WndProc(HWND, UINT, WPARAM, LPARAM);
 
LPDIRECT3D9 m_pD3D = NULL;
LPDIRECT3DDEVICE9 m_pd3dDevice = NULL;
BOOL InitD3D(HWND hWnd, int iWindowWidth, int iWindowHeight);
 
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
        UNREFERENCED_PARAMETER(hPrevInstance);
        UNREFERENCED_PARAMETER(lpCmdLine);
 
        // TODO: Place code here.
        HACCEL hAccelTable;
 
        // Initialize global strings
        LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
        LoadString(hInstance, IDC_TUTORIAL01, szWindowClass, MAX_LOADSTRING);
        MyRegisterClass(hInstance);
 
        // Perform application initialization:
        if (!InitInstance (hInstance, nCmdShow))
                return FALSE;
 
        RECT rc;
        GetClientRect(hMainWnd, &rc);
        if (!InitD3D(hMainWnd, rc.right-rc.left, rc.bottom-rc.top))
                return FALSE;
 
        hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TUTORIAL01));
 
        // Main message loop:
        MSG msg;
        ZeroMemory(&msg, sizeof(MSG));
        while( msg.message!=WM_QUIT ) // если не сообщение о выходе
        {
                // проверяем, есть ли сообщения в очереди
                if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
                {
                        // сообщения есть, обрабатываем их
                        TranslateMessage( &msg );
                        DispatchMessage( &msg );
                }
                else // иначе занимаемся рендером
                {
                        // тут будет код рендера
                        // а пока просто очистка экрана
                        m_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_STENCIL|
                                D3DCLEAR_ZBUFFER, 0, 0, 0);
                        m_pd3dDevice->Present(NULL, NULL, NULL, NULL);
                }
        }
        return (int) msg.wParam;
}
 
 
 
//
//  FUNCTION: MyRegisterClass()
//
//  PURPOSE: Registers the window class.
//
//  COMMENTS:
//
//    This function and its usage are only necessary if you want this code
//    to be compatible with Win32 systems prior to the 'RegisterClassEx'
//    function that was added to Windows 95. It is important to call this function
//    so that the application will get 'well formed' small icons associated
//    with it.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
        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                      = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TUTORIAL01));
        wcex.hCursor            = LoadCursor(NULL, IDC_ARROW);
        wcex.hbrBackground      = NULL;
        wcex.lpszMenuName       = NULL;//MAKEINTRESOURCE(IDC_TUTORIAL01);
        wcex.lpszClassName      = szWindowClass;
        wcex.hIconSm            = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
        return RegisterClassEx(&wcex);
}
 
//
//   FUNCTION: InitInstance(HINSTANCE, int)
//
//   PURPOSE: Saves instance handle and creates main window
//
//   COMMENTS:
//
//        In this function, we save the instance handle in a global variable and
//        create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   hInst = hInstance; // Store instance handle in our global variable
 
   hMainWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);
 
   if (!hMainWnd)
   {
      return FALSE;
   }
 
   ShowWindow(hMainWnd, nCmdShow);
   UpdateWindow(hMainWnd);
 
        return TRUE;
}
 
//
//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_COMMAND  - process the application menu
//  WM_PAINT    - Paint the main window
//  WM_DESTROY  - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        switch (message)
        {
        case WM_ERASEBKGND:
                return TRUE;
        case WM_PAINT:
                {
                        PAINTSTRUCT ps;
                        HDC hdc;
                        hdc = BeginPaint(hWnd, &ps);
                        // TODO: Add any drawing code here...
                        EndPaint(hWnd, &ps);
                        break;
                }
        case WM_DESTROY:
                PostQuitMessage(0);
                break;
        default:
                return DefWindowProc(hWnd, message, wParam, lParam);
        }
        return 0;
}
 
BOOL InitD3D(HWND hWnd, int iWindowWidth, int iWindowHeight)
{
        // сначала проицициализируем сам DirectX 9
        m_pD3D = Direct3DCreate9( D3D_SDK_VERSION );
        if (m_pD3D==NULL)
                return FALSE;
 
        // структкура с параметрами девайса
        D3DPRESENT_PARAMETERS d3dpp;
        ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS)); // обнулим
        d3dpp.BackBufferWidth = iWindowWidth; // указываем ширину и
        d3dpp.BackBufferHeight = iWindowHeight; // высоту области рендера
        d3dpp.BackBufferCount = 1; // один внеэкранный буфер
        d3dpp.Windowed = TRUE; // рендер в окне, а не в полный экран
        d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; // формат выберет сам DX
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; // так лучше делать всегда
        d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; // формат Z-буфера
        d3dpp.EnableAutoDepthStencil = TRUE; // нам нужен Z-буфер
        d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
 
        // и теперь создадим сам девайс
        HRESULT hr = m_pD3D->CreateDevice( D3DADAPTER_DEFAULT,
                D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING,
                &d3dpp, &m_pd3dDevice );
 
        return !FAILED(hr);
}
выдаётся ошибка:

1>------ Построение начато: проект: Tutorial-01, Конфигурация: Debug Win32 ------
1>Построение начато 17.09.2011 22:01:37.
1>InitializeBuildStatus:
1> Обращение к "Debug\Tutorial-01.unsuccessfulbuild".
1>ClCompile:
1> Для всех выходных данных обновления не требуется.
1> Tutorial-01.cpp
1>ResourceCompile:
1> Для всех выходных данных обновления не требуется.
1>ManifestResourceCompile:
1> Для всех выходных данных обновления не требуется.
1>Tutorial-01.obj : error LNK2019: ссылка на неразрешенный внешний символ _Direct3DCreate9@4 в функции "int __cdecl InitD3D(struct HWND__ *,int,int)" (?InitD3D@@YAHPAUHWND__@@HH@Z)
1>C:\Documents and Settings\Глеб\Рабочий стол\Проект\Debug\Tutorial-01.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:02.28
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

как лечить?)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2011, 22:08
Ответы с готовыми решениями:

Ошибка при компилировании
Вот такой код procedure TForm6.Button3Click(Sender: TObject); var data:Tstringlist; HTTP: TIdHTTP; begin ...

Ошибка при компилировании
Когда снимаю галочку Project-&gt;Options-&gt;Packages-&gt;Build with runtime packages. Компилятор не хочет компилировать, и показывает эту...

Ошибка при компилировании
При компилировании выдается ошибка &quot;невозможно создать экземпляр абстрактного класса&quot;. Подскажите, что с ней делать, пожалуйста. ...

27
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
18.09.2011, 02:45
пути в опциях проекта к библиотекам не указаны
0
 Аватар для Klawg
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 45
18.09.2011, 09:48  [ТС]
Цитата Сообщение от OstapBender Посмотреть сообщение
пути в опциях проекта к библиотекам не указаны
к каким именно библиотекам? по подробней, пожалуйста
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
19.09.2011, 08:48
Ну, вам же пишит компилятор:
Цитата Сообщение от Klawg Посмотреть сообщение
ссылка на неразрешенный внешний символ _Direct3DCreate9@4
1) Находим в справочнике, в данном случае можно использовать MSDN, описание функции Direct3DCreate9 (символы декорирования имени функции отбрасываем).
2) В описании функции Direct3DCreate9 находим подраздел Requirements и видим там имя требуемой библиотеки D3D9.lib.

В дальнейшем используем подобный алгоритм действий для решения таких ошибок компиляции.
0
 Аватар для Klawg
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 45
19.09.2011, 17:03  [ТС]
так я же подключил!

C++
1
2
3
4
5
#include <d3d9.h>
#include <d3dx9.h>
 
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
19.09.2011, 20:25
Да, я не обратил внимания на это.
Тогда вопросы: какая версии Visual Studio, DirectX SDK. Дело в том, что если бы не были указаны пути к библиотекам, то компилятор сообщал о том, что не возможно открыть файл d3d9.lib. Но у вас такого сообщения нет. Такое впечатление, что какой-то неправильный у вас файл d3d9.lib.
Кстати, у меня ваш код компилируется без ошибок (VC2008Pro, SDK Jume 2010).
0
 Аватар для Klawg
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 45
20.09.2011, 15:35  [ТС]
sdk june 2010, VC2010, directX9(т.к. winXP)
и кстати этот исходник компилируется у всех, кроме меня(
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
20.09.2011, 21:10
Пробовали создавать новый проект (настройки проекта оставлять по умолчанию), переустановить DirectX SDK? Также не компилируется? Компьютер удовлетворяет системным требованиям для DirectX SDK?
0
 Аватар для Klawg
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 45
28.09.2011, 21:18  [ТС]
Извиняюсь за задержку, я пробовал: пересоздать проект, переустановить SDK, поменял операционную систему - никак(
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 14:10
Цитата Сообщение от Klawg Посмотреть сообщение
так я же подключил!
Указание подключаемых либов и директории, где эти либы есть это разные вешчи.
В настройках проекта укажи пути до хэдэров ДиректИкса и до папки с либами его же.
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
29.09.2011, 14:51
Так установщик DirectX SDK автоматом пути прописывает в Visual Studio. Во всяком случае это верно для VS2008.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 14:58
Судя по ошибке, не прописаны.
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
29.09.2011, 16:12
Deviaphan. Ну, как бы похоже на это. Но вот
Цитата Сообщение от Klawg Посмотреть сообщение
я пробовал: пересоздать проект, переустановить SDK, поменял операционную систему - никак
Что же, получается как-то по хитрому каждый раз установка SDK выполняется, что пути не прописываются в VS.
Klawg, а вы установку SDK до или после установки VS выполняли?

Не по теме:

Жесть, я так понял, что даже и ОС переустановили.

1
 Аватар для Klawg
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 45
30.09.2011, 09:41  [ТС]
Пути к папкам прописаны у меня.
SDK устанавливаю после VS.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
30.09.2011, 09:43
Убедись, что прописаны правильно. Раз не находит либы, то где-то в пути ошибка. Как вариант, прописано не там, где нужно. Некоторые любят прописывать пути для либов там, где прописываются пути до хэдэров.
0
 Аватар для Klawg
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 45
30.09.2011, 09:44  [ТС]
Вот так пути прописал:
Миниатюры
Ошибка при компилировании с DirectX  
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
30.09.2011, 09:48
Ну да, туда. После добавления своих путей ; поставил? Вообще, нужно скрин того что сделал показывать, а не того, куда собираешся делать.
Ребилд проекта после переустановок делал?
Когда всё прописано правильно и не работает, это, извиняюсь, жопа.
0
 Аватар для Klawg
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 45
30.09.2011, 10:10  [ТС]
Дело в том, что я только собираюсь учить DirectX, и этот исходник я скопировал.
Вот скрины с путями:
Миниатюры
Ошибка при компилировании с DirectX   Ошибка при компилировании с DirectX   Ошибка при компилировании с DirectX  

Ошибка при компилировании с DirectX  
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
30.09.2011, 10:12
Указал пути на х64 либы для Win32 проекта.
1
 Аватар для Klawg
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 45
30.09.2011, 10:16  [ТС]
Всё заработало спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.09.2011, 10:16
Помогаю со студенческими работами здесь

Ошибка при компилировании
Здравствуйте. У меня ошибка при компилировании кода в VS2017 и мне не понятно как её устранить, помогите, пожалуйста. #include...

ошибка при компилировании
уже не знаю че делать .. написал программу для класса полиномов -выводит все время эту ошибку error C2108: subscript is not of integral...

Ошибка при компилировании
при компиляции выдало ошибки error: illegal expression syntax error: ; expected but identifier Max found Исходный код uses crt; ...

Ошибка при компилировании
Всем привет. Я в программировании не силен, мне просто нужно скомпилировать код но выдает ошибку. У другого человека все прекрасно...

Ошибка при компилировании
При компиляции проекта выскакивает ошибка с текстом: Assertion failed : targSum!=NULL, file C:\src\ilink\fixups.c, line 561 Люди...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru