Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с линковкой 
:(
    Опции темы
Surprize
Дата 25.4.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Пытаюсь скомпилировать на Visual 2008. Все либы подключил как надо, но возникает следующая ошибка:


Код
error LNK2019: unresolved external symbol "long __cdecl DX3DInit(struct IDirect3D9 * *,struct IDirect3DDevice9 * *,struct HWND__ *,unsigned long,unsigned long,int)" (?DX3DInit@@YAJPAPAUIDirect3D9@@PAPAUIDirect3DDevice9@@PAUHWND__@@KKH@Z) referenced in function "int __cdecl InitInstance(struct HINSTANCE__ *,int)" (?InitInstance@@YAHPAUHINSTANCE__@@H@Z)
S:\Project\DIRECT X\Shablon\Debug\Shablon.exe : fatal error LNK1120: 1 unresolved externals




вот функция инициализации 
Код

// Функция инициализации Direct3D




HRESULT DXDInit(IDirect3D9 **ppiD3D9,
                IDirect3DDevice9 **ppiD3DDevice9,
                 HWND hWnd,
                 DWORD iWidth,
                 DWORD iHeight,
                 BOOL bFullScreen
                 )
{
    //Инициализация
    if((*ppiD3D9 = Direct3DCreate9(D3D_SDK_VERSION)) == NULL)
        return E_FAIL;

    // Заполняем основные параметры
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory(&d3dpp, sizeof(d3dpp));

    d3dpp.BackBufferWidth = iWidth;
    d3dpp.BackBufferHeight = iHeight;

    // Запрос на отображение в полноэкранном режиме
    int iRes;
    if (!bFullScreen)
        iRes=MessageBox(hWnd, "Использовать полноэкранный режим?",
        "Screen", MB_YESNO | MB_ICONQUESTION);
    else
        iRes = IDYES;

    if(iRes == IDYES)
    {
        ////////////////////////////////////////////
        // Полноэкранный режим
        ////////////////////////////////////////////
        // Установка параметров полноэкранного режима
        d3dpp.BackBufferFormat     = D3DFMT_R5G6B5;
        d3dpp.SwapEffect         = D3DSWAPEFFECT_FLIP;
        d3dpp.Windowed             = FALSE;
        d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_INTERVAL_DEFAULT;
    }
    else
    {
        //////////////////////////////////////////////
        // Оконный режим
        //////////////////////////////////////////////
        RECT wndRect;
        RECT clientRect;
        GetWindowRect(hWnd, &wndRect);
        GetClientRect(hWnd, &clientRect);

        int iWinWidth = iWidth + (wndRect.right - wndRect.left) -
            (clientRect.right - clientRect.left);
        int iWinHeight = iHeight + (wndRect.bottom - wndRect.top) -
            (clientRect.bottom - clientRect.top);

        MoveWindow(hWnd, wndRect.left,wndRect.top,
                    iWinWidth, iWinHeight, TRUE);

        // Получить формат пиксела
        D3DDISPLAYMODE d3ddm;
        (*ppiD3D9)->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);

        // Установка параметров
        d3dpp.BackBufferFormat     = d3ddm.Format;
        d3dpp.SwapEffect         = D3DSWAPEFFECT_DISCARD;
        d3dpp.Windowed             = TRUE;

    }

    // Создать 3D-устройство
    DWORD Flags = D3DCREATE_MIXED_VERTEXPROCESSING | D3DCREATE_MULTITHREADED;

    HRESULT hRes;
    if(FAILED(hRes = (*ppiD3D9)->CreateDevice(
        D3DADAPTER_DEFAULT,
        D3DDEVTYPE_HAL, hWnd, Flags,

        &d3dpp, ppiD3DDevice9)))
        return hRes;

    // Установить перспективу 
    float Aspect = 
        (float)d3dpp.BackBufferWidth / (float)d3dpp.BackBufferHeight;

    D3DXMATRIX matProjection;
    D3DXMatrixPerspectiveFovLH(&matProjection, D3DX_PI/4.0f,
        Aspect, 10.0f, 1000.0f);
    (*ppiD3DDevice9)->SetTransform(D3DTS_PROJECTION, &matProjection);

    return S_OK;
}



Это сообщение отредактировал(а) Surprize - 25.4.2008, 13:04
PM MAIL   Вверх
Graf_h
Дата 25.4.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: -1
Всего: 5



Цитата(Surprize @  25.4.2008,  11:48 Найти цитируемый пост)
Все либы подключил как надо, но возникает следующая ошибка:

Значит неправильно подключили!Нужно либы и хедеры подключать 


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
Surprize
Дата 25.4.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



#include <d3d9.h>
#include <d3dx9.h>

#pragma comment( lib,"d3d9.lib" )
#pragma comment( lib,"d3dx9.lib" )

 smile  Да вот же всё есть! Почему не работает не знаю! помогите!
PM MAIL   Вверх
Surprize
Дата 25.4.2008, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 17.3.2008

Репутация: нет
Всего: нет



Ну что никто не знает в чём может быть проблема?
Может это из-за SDK нового?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.