При запуске кода командой:
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;
};