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

lib библиотеки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ текст на русском! http://www.cyberforum.ru/cpp-beginners/thread45698.html
Что неправильного в тексте программы? нужнго слово ПРИВЕТ вывести на экран! // rus.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> char *...
C++ Error LNK2001: неразрешенный внешний символ Помогите пожалуйста тупому нубу :) Все неприятности начались после добавления дружественного класса - class KWnd { static HWND mhWnd; WNDCLASS wc; static HINSTANCE hInstance; static... http://www.cyberforum.ru/cpp-beginners/thread45672.html
не работает функция isupper() C++
Доброе утро!У меня в программе не работает функция isupper(): for(int index = 0; index < strlen(str); index++) { if(isupper(*(str+index))) count_symbol++; } При компиляции все...
C++ текстовая обработка
дано задание: "Дана последовательность строк. Каждая строка состоит из слов, разделенных пробелами. Написать программу, обеспечивающую ввод строк и их корректировку. Корректировка заключается в...
C++ Переопределение оператора== http://www.cyberforum.ru/cpp-beginners/thread45649.html
Создал функцию-операцию == для экземпляров класса, однако при выполнении данного кода Trigger.h #pragma once #include "combinate.h" class Trigger : public Combinate { static int...
C++ Алгоритм программы Доброго времени суток. Есть программа, она выводит время до определенной даты #include <time.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #ifdef WIN32 # define SLEEP(x)... подробнее

Показать сообщение отдельно
gena_br
0 / 0 / 0
Регистрация: 31.07.2009
Сообщений: 6
31.07.2009, 17:50  [ТС]
Цитата Сообщение от odip Посмотреть сообщение
А ты часом на забыл описать статический член класса в коде ?

geEngineLibrary.lib - это же твоя библиотека.
Разумеется этого статического члена нет в DirectX.

И кстати - если без библиотеки собрать, а сразу программу + исходники библиотеки - так у тебя тоже не должно получиться.
вот класс geGraphicsDeviceManager:

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
#ifndef _GRAPHICSDEVICEMANAGER_H
#define _GRAPHICSDEVICEMANAGER_H
 
#include "d3d9.h"
 
class geGraphicsDeviceManager
{
private:
    static IDirect3D9 *m_pD3D;
    static IDirect3DDevice9 *m_pGraphicsDevice;
    D3DPRESENT_PARAMETERS m_d3dpp;
 
public:
    geGraphicsDeviceManager(void);
    ~geGraphicsDeviceManager(void);
 
    static IDirect3DDevice9* GetGraphicsDevice();
    HRESULT CreateDevice(IDirect3DDevice9** ppGraphicsDevice, HWND hWnd,
        int width, int height, bool fullscreen);
};
#endif
#include "StdAfx.h"
#include "geGraphicsDeviceManager.h"
 
geGraphicsDeviceManager::geGraphicsDeviceManager(void)
{
}
 
geGraphicsDeviceManager::~geGraphicsDeviceManager(void)
{
    if (m_pGraphicsDevice)
    {
        m_pGraphicsDevice->Release();
        m_pGraphicsDevice = NULL;
    }
    if (m_pD3D)
    {
        m_pD3D->Release();
        m_pD3D = NULL;
    }
}
 
IDirect3DDevice9* geGraphicsDeviceManager::GetGraphicsDevice()
{
    return m_pGraphicsDevice;
}
 
HRESULT geGraphicsDeviceManager::CreateDevice(IDirect3DDevice9** ppGraphicsDevice,
                                              HWND hWnd, int width, int height, bool fullscreen)
{
    m_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    if (!m_pD3D) return E_FAIL;
 
    ZeroMemory(&m_d3dpp, sizeof(D3DPRESENT_PARAMETERS));
    m_d3dpp.BackBufferWidth = width;
    m_d3dpp.BackBufferHeight = height;
    m_d3dpp.EnableAutoDepthStencil = TRUE;
    m_d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
 
    if (fullscreen)
    {
        m_d3dpp.BackBufferFormat = D3DFMT_R5G6B5;
        m_d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP;
        m_d3dpp.Windowed = false;
        m_d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
        m_d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
 
        SetWindowLong(hWnd, GWL_STYLE, WS_POPUP);
    }
    else
    {
        RECT wndRect;
        RECT clientRect;
 
        GetWindowRect(hWnd, &wndRect);
        GetClientRect(hWnd, &clientRect);
 
        int WndWidth = width + ((wndRect.right - wndRect.left) - clientRect.right);
        int WndHeight = height + ((wndRect.bottom - wndRect.top) - clientRect.bottom);
 
        MoveWindow(hWnd, wndRect.left, wndRect.top, WndWidth, WndHeight, TRUE);
 
        D3DDISPLAYMODE d3ddm;
        m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
 
        m_d3dpp.BackBufferFormat = d3ddm.Format;
        m_d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
        m_d3dpp.Windowed = TRUE;
    }
 
    DWORD flags = D3DCREATE_MIXED_VERTEXPROCESSING;
 
    HRESULT hRes;
    hRes = m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, flags,
        &m_d3dpp, ppGraphicsDevice);
    if(FAILED(hRes)) return hRes;
 
    m_pGraphicsDevice = *ppGraphicsDevice;
 
    m_pGraphicsDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
 
    return S_OK;
}


Если убрать static везде всё работает. Как использовать статические члены в либе?

Цитата Сообщение от odip
2gena_br: Cтатические библиотеки ты создавал и использовал раньше ?
Нет, первый раз пишу. Я вообще в С++ можно сказать новичок. Раньше писал "движок" на C#, щас пробую перенести его на С++

Добавлено через 8 минут 12 секунд
Всем спасибо, на другом форуме подсказали, что надо и в cpp файле описывать стат члены. Добавил в cpp
C++
1
2
IDirect3D9* geGraphicsDeviceManager::m_pD3D;
IDirect3DDevice9* geGraphicsDeviceManager::m_pGraphicsDevice;
и все заработало
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru