D3D9 Direct3DCreate9 () Ошибка компоновщика, но все другие функции D3D работают - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь создать оболочку для Direct3D9 для быстрого и легкого использования DirectX 9 в моем собственном приложении.Все отлично компилируется, за исключением одной и единственной функции "Direct3DCreate9".Если я прокомментирую эту функцию, то все остальные функции Direct X будут компилироваться просто отлично.Я скачал SDK (как я уже много раз) с веб-сайта Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=6812.

Я попытался связать d3d9.lib внутри настроек проекта для Visual Studio.Я попытался с помощью компоновщика комментариев #pragma #pragma comment (lib, "d3d9.lib")

Не могу найти аналогичных проблем в Интернете.Я могу найти только те вопросы, которые могут быть связаны с библиотекой.

        bool D3D9::Initialize(HWND i_hWnd)
        {
            D3DPRESENT_PARAMETERS d3dpp;
            ZeroMemory(&d3dpp, sizeof(d3dpp));
            d3dpp.Windowed = TRUE;
            d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
            d3dpp.hDeviceWindow = i_hWnd;

            // If I comment this line out, it compiles fine
            m_pD3D = Direct3DCreate9(D3D_SDK_VERSION); // LINKER ERROR

            HRESULT hr = m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, i_hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &m_pDevice);
            return true;
        }

Когда я закомментирую строку кода, вызывающую Direct3DCreate9, я ожидаю, что со всеми остальными D3D возникнут ошибки компоновщикавызывает сам Direct3DDevice.Но как только я прокомментирую одну строку, проблем с компиляцией не возникнет.

Я использую Visual Studio 2015 в Windows 10.

1 Ответ

1 голос
/ 21 апреля 2019

Я это исправил.

Проблема была в том, что мне нужно было связать Microsoft DirectX SDK (июнь 2010 г.) \ Lib \ x86 .

Я связывался с Microsoft DirectX SDK (июнь 2010 г.) \ Lib \ x64 .

...