D3D9 Direct3DCreate9()链接器错误,但所有其他D3D函数正常工作

时间:2019-04-21 05:30:08

标签: c++ linker linker-errors directx-9

我正在尝试为“ Direct3D9”创建包装,以便在自己的应用程序中快速方便地使用“ DirectX 9”。除了一个函数和唯一的函数“ Direct3DCreate9”之外,所有东西都可以编译。如果我将该函数注释掉,那么所有其他Direct X函数都可以编译。我从Microsoft网站https://www.microsoft.com/en-us/download/details.aspx?id=6812下载了SDK(就像以前一样)。

我尝试将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的代码行时,我希望Direct3DDevice自身上的所有其他D3D调用都存在链接器错误。但是一旦我注释掉其中一行,编译就没有问题了。

我正在Windows 10上使用Visual Studio 2015。

1 个答案:

答案 0 :(得分:1)

我修复了。

问题是我需要链接到 Microsoft DirectX SDK(2010年6月)\ Lib \ x86

我链接到 Microsoft DirectX SDK(2010年6月)\ Lib \ x64