0

При запуске кода командой:

g++.exe App/main.cpp App/AppWindow.cpp GameEngine/WindowingSystem/Window.cpp GameEngine/GraphicsEngine/GraphicsEngine.cpp -o main.exe

Вылетает ошибка:

C:\Users\486B~1\AppData\Local\Temp\ccFUVirG.o:GraphicsEngine.cpp:(.text+0xae): undefined reference to `D3D11CreateDevice'
collect2.exe: error: ld returned 1 exit status

Почему возникает ошибка?

main, AppWindow, Window Я не привожу т. к. они не влияют на работу (я закомментировал кусочки где используется код GraphicsEngine)

Код GraphicsEngine.cpp:

#include "GraphicsEngine.h"

GraphicsEngine::GraphicsEngine() { }

bool GraphicsEngine::init() { D3D_DRIVER_TYPE driver_types[]= { D3D_DRIVER_TYPE_HARDWARE, D3D_DRIVER_TYPE_WARP, D3D_DRIVER_TYPE_REFERENCE }; UINT num_driver_types = ARRAYSIZE(driver_types);

D3D_FEATURE_LEVEL feature_levels[]=
{
    D3D_FEATURE_LEVEL_11_0
};
UINT num_feature_levels = ARRAYSIZE(feature_levels);

HRESULT res = 0;
for (UINT driver_type_index = 0; driver_type_index < num_driver_types;)
{
    res =D3D11CreateDevice(NULL, driver_types[driver_type_index], NULL, NULL, feature_levels,
        num_feature_levels, D3D11_SDK_VERSION, &m_d3d_device, &m_feature_level, &m_imm_context);
    if (SUCCEEDED(res))
        break;
        ++driver_type_index;
}
if (FAILED(res))
{
    return false;
}



return true;

}

bool GraphicsEngine::release() { m_imm_context->Release(); m_d3d_device->Release(); return true; }

GraphicsEngine::~GraphicsEngine() { }

GraphicsEngine * GraphicsEngine::get() { static GraphicsEngine engine; return &engine; }

Код GraphicsEngine.h:

#pragma once
#include <d3d11.h>

class SwapChain; class DeviceContext;

class GraphicsEngine { public: GraphicsEngine(); bool init(); bool release(); ~GraphicsEngine(); public: static GraphicsEngine* get();

private: ID3D11Device * m_d3d_device; D3D_FEATURE_LEVEL m_feature_level; ID3D11DeviceContext * m_imm_context; };

1 Answers1

0

Возможно, Вы не подключили библиотеку с этой функцией через -l? Тут пример подключения И конкретно по этой либе

https://www.gamedev.net/forums/topic/546427-how-to-linking-directx-library/546427/