0

几天来我一直在检查我的代码,更改一些代码以查看它们是否有效,尝试不同的方法来使用我的代码,但我仍然遇到那个烦人的 LNK2019 错误。

这是原始错误消息。

错误 1 ​​错误 LNK2019:未解析的外部符号“public: struct IDirect3DSurface9 * thiscall CRenderer::LoadSurface(wchar_t const *,unsigned long,struct IDirect3DDevice9 *)” (?LoadSurface@CRenderer@@QAEPAUIDirect3DSurface9@@PB_WKPAUIDirect3DDevice9@@@Z) 中引用函数“公共:void __thiscall CGame::InitGame(struct HWND *,int,int,bool)”(?InitGame@CGame@@QAEXPAUHWND__@@HH_N@Z) J:\Workspace\Fruit Avengers\Game.obj

这是我认为问题所在的代码。我在以前的项目中使用过这个代码。我只是不知道为什么这一次没有奏效。

渲染器.h

class CRenderer
{
public:
    IDirect3DTexture9* LoadTexture( LPCSTR FileName, D3DCOLOR Alpha, IDirect3DDevice9* Device );
    IDirect3DSurface9* LoadSurface( LPCWSTR FileName, D3DCOLOR Alpha, IDirect3DDevice9* Device );
};

渲染器.cpp

IDirect3DSurface9* CRenderer::LoadSurface( LPCWSTR FileName, D3DCOLOR Alpha, IDirect3DDevice9* Device )
{
    IDirect3DSurface9* Result = NULL;
    D3DXIMAGE_INFO Info;
    D3DXGetImageInfoFromFileW( FileName, &Info );
    Device->CreateOffscreenPlainSurface( Info.Width, Info.Height, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &Result, NULL );
    D3DXLoadSurfaceFromFileW( Result, NULL, NULL, FileName, NULL, D3DX_DEFAULT, Alpha, NULL );
    return Result;
}

游戏.cpp

void CGame::InitGame( HWND hWnd, int Width, int Height, bool Windowed )
{
    //Initialize Includes
    Graphics.InitDirect3D( hWnd, Width, Height, Windowed );

    //Load Game Variables...

    //Load Game Media...
    MenuBackground = WWIRenderer.LoadSurface( L"Resource/MenuBackground.jpg", 0, Graphics.Direct3DDevice );
   //^
}

编辑:在有人问之前,我已经进行了一些搜索,但我找到的答案并没有那么有用。

4

2 回答 2

0

我没记错,如果您没有安装 DirectX SDK,就会出现此错误。所以你应该这样做,或者重新安装或更新它。

于 2013-09-09T09:23:23.317 回答
0

使用 MSVC++ 编译时,必须将每个源文件和头文件添加到解决方案资源管理器中,否则您将收到 LNK2019 错误。谢谢乌奇亚。

于 2013-09-10T09:12:09.277 回答