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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
yava
3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 83
#1

Объявление типов в h.-файлах - C++

24.07.2009, 12:56. Просмотров 1630. Ответов 8
Метки нет (Все метки)

Нужно объвить несколько переменных нестандартного типа (этот тип объявлен в библиотеке DirectX), компилятор ругается! Получается только с типом (int)!

Подскажите примерчик с объявлением нестандартного типа!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2009, 12:56     Объявление типов в h.-файлах
Посмотрите здесь:

Объявление класс в нескольких файлах - C++
Можноли как-то объявление одного класса разбить на несколько заголовочных файлов? Хочу создать класс, в котором основной функционал...

Объявление типов и указателей в C++ - C++
Доброго времени суток, есть код в Delphi, там следующая конструкция объявления типов: // Определяем типы: type TData = array...

Объявление типов данных. - C++
Зачем это нужно? Это как-то связано с выделением памяти. Может, чтобы быстрее управлять данными? :)

Объявление переменных различных типов - C++
Совсем не понимаю задачу Помогите пожалуйста!! ...

Объявление целых типов с буквой - что означает эта буква? - C++
Всем здрасти! Объясните пожалуйста, что значит следующее объявление: int a = 4000u; В чем разница от обычного объявления? Что это за...

Объявление переменной - C++
Доброго времени суток. Возник вопрос, по какой причине при следующей форме записи, переменные "y" и "z" считаются компилятором (VS12) не...

Предварительное объявление - C++
Добрый вечер, Есть файл file.h и file.cpp, в file.cpp я делаю подключение #include <boost/signal.hpp>, не подключаю в хэдер file.h...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
24.07.2009, 13:10     Объявление типов в h.-файлах #2
ты заголовочные файлы директ икса то заинклюдь в свой .h файл..
Alexandoros
227 / 65 / 4
Регистрация: 02.06.2009
Сообщений: 280
24.07.2009, 18:55     Объявление типов в h.-файлах #3
typedef CMySuperClass<Xtype1<int, std::string> > MyType2
yava
3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 83
27.07.2009, 13:29  [ТС]     Объявление типов в h.-файлах #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
//Файл main.cpp
#include <windows.h>
#include "directx.h"
 
 
 
 
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
        case WM_DESTROY:
            PostQuitMessage( 0 );
            return 0;
 
        case WM_PAINT:
//          InitD3D( hWnd );
            Render();
            ValidateRect( hWnd, NULL );
            return 0;
    }
 
    return DefWindowProc( hWnd, msg, wParam, lParam );
}
 
 
 
int WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT )
{
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, 
                      GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
                      "D3D Tutorial", NULL };
    RegisterClassEx( &wc );
 
    HWND hWnd = CreateWindow( "D3D Tutorial", "Create Window", 
                              WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
                              NULL, NULL, wc.hInstance, NULL );
 
    ShowWindow( hWnd, SW_SHOWDEFAULT );
    UpdateWindow( hWnd );
 
    MSG msg; 
    while( GetMessage( &msg, NULL, 0, 0 ) )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }
 
 
    UnregisterClass( "D3D Tutorial", wc.hInstance );
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Файл directx.h
#include <d3d9.h>
 
 
#ifndef DIRECTX_H 
#define DIRECTX_H 
 
 
 
extern LPDIRECT3D9             g_pD3D;
extern LPDIRECT3DDEVICE9       g_pd3dDevice;
 
HRESULT InitD3D(HWND hWnd);
void Cleanup();
void Render();
 
 
 
#endif
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
//Файл directx.cpp
#include <d3d9.h>
#pragma warning( disable : 4996 ) // disable deprecated warning 
#include <strsafe.h>
#pragma warning( default : 4996 ) 
 
#include <windows.h>
 
LPDIRECT3D9             g_pD3D       = NULL; // Used to create the D3DDevice
LPDIRECT3DDEVICE9       g_pd3dDevice = NULL; // Our rendering device
 
 
 
HRESULT InitD3D( HWND hWnd )
{
    // Create the D3D object, which is needed to create the D3DDevice.
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        return E_FAIL;
 
    // Set up the structure used to create the D3DDevice. Most parameters are
    // zeroed out. We set Windowed to TRUE, since we want to do D3D in a
    // window, and then set the SwapEffect to "discard", which is the most
    // efficient method of presenting the back buffer to the display.  And 
    // we request a back buffer format that matches the current desktop display 
    // format.
    D3DPRESENT_PARAMETERS d3dpp; 
    ZeroMemory( &d3dpp, sizeof(d3dpp) );
    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
 
    // Create the Direct3D device. Here we are using the default adapter (most
    // systems only have one, unless they have multiple graphics hardware cards
    // installed) and requesting the HAL (which is saying we want the hardware
    // device rather than a software one). Software vertex processing is 
    // specified since we know it will work on all cards. On cards that support 
    // hardware vertex processing, though, we would see a big performance gain 
    // by specifying hardware vertex processing.
    if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                      &d3dpp, &g_pd3dDevice ) ) )
    {
        return E_FAIL;
    }
 
    // Device state would normally be set here
 
    return S_OK;
}
 
 
 
 
//-----------------------------------------------------------------------------
// Name: Cleanup()
// Desc: Releases all previously initialized objects
//-----------------------------------------------------------------------------
VOID Cleanup()
{
    if( g_pd3dDevice != NULL) 
        g_pd3dDevice->Release();
 
    if( g_pD3D != NULL)
        g_pD3D->Release();
}
 
 
 
 
//-----------------------------------------------------------------------------
// Name: Render()
// Desc: Draws the scene
//-----------------------------------------------------------------------------
VOID Render()
{
    if( NULL == g_pd3dDevice )
        return;
 
    // Clear the backbuffer to a blue color
    g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
    
    // Begin the scene
    if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
    {
        // Rendering of scene objects can happen here
    
        // End the scene
        g_pd3dDevice->EndScene();
    }
 
    // Present the backbuffer contents to the display
    g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}


Вот ошибка, которую выдает компилятор:
Error 1 error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function "long __cdecl InitD3D(struct HWND__ *)" (?InitD3D@@YAJPAUHWND__@@@Z) directx.obj
Error 2 fatal error LNK1120: 1 unresolved externals D:\master\Debug\window.exe
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
27.07.2009, 13:34     Объявление типов в h.-файлах #5
Это не компилятор,это линковщик. Подключай библиотеки D3D
ISergey
Maniac
Эксперт С++
1372 / 883 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 1
27.07.2009, 13:37     Объявление типов в h.-файлах #6
это
C++
1
2
3
4
5
6
7
//Файл directx.cpp
#include <d3d9.h>
#pragma warning( disable : 4996 ) // disable deprecated warning 
#include <strsafe.h>
#pragma warning( default : 4996 ) 
 
#include <windows.h>
поменяй на
C++
1
2
3
4
5
6
7
//Файл directx.cpp
#include "directx.h"
#pragma warning( disable : 4996 ) // disable deprecated warning 
#include <strsafe.h>
#pragma warning( default : 4996 ) 
 
#include <windows.h>
yava
3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 83
27.07.2009, 14:29  [ТС]     Объявление типов в h.-файлах #7
Ничего не поменялось от этого, те же ошибки.
ISergey
Maniac
Эксперт С++
1372 / 883 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 1
27.07.2009, 14:46     Объявление типов в h.-файлах #8
Цитата Сообщение от yava Посмотреть сообщение
Ничего не поменялось от этого, те же ошибки.
ты это сделал?
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Подключай библиотеки D3D
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2009, 23:38     Объявление типов в h.-файлах
Еще ссылки по теме:

объявление функции - C++
допустим у меня есть программа она использует из библиотеке conio.h функцию getch() вот мне интересно как в программе подключить эту...

объявление переменных - C++
вообщем есть задание которое не раз тут обсуждалось решалось и тд. суть не в этом. столкнулся с маленькой проблемой при оформлении каждого...

Объявление конструктора - C++
Изучаю книгу Джосьютиса по STL и столкнулся с немного непонятным объявлением конструктора. Помогите разобраться, правильно ли я его...

Объявление переменной - C++
Два вопроса: 1) Чем отличается запись: int a = 10; От: int a(10); 2) Что обозначает данная запись: int *a = new int (3); ...

Объявление переменных. - C++
У меня есть два юнита с формами. В одном располагается TMainMenu, где я выбираю как производится ввод: из файла или с клавиатуры, и могу...


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

Или воспользуйтесь поиском по форуму:
yava
3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 83
27.07.2009, 23:38  [ТС]     Объявление типов в h.-файлах #9
Linker->Input->Additional dependencies:
d3dx9.lib, d3d9.lib, winmm.lib, dshow.lib, dinput.lib, dinput8.lib, dxguid.lib
Вот чего еще нахватало!
Теперь все работает! Всем спасибо!
Yandex
Объявления
27.07.2009, 23:38     Объявление типов в h.-файлах
Ответ Создать тему
Опции темы

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