Hook for DirectX游戏

时间:2014-01-05 21:51:57

标签: c++ directx hook

因此。我找到了很好的开源项目here来挂钩名为GTA Vice City的旧游戏(我想在游戏画面上绘制一些像HUD一样的图像) 我刚刚安装了DOT NET 2002并尝试编译d3d8库项目 (Visual Studio已经包含DirectX 8.1库和头文件),但我收到的错误很少。 有些人编写得很好,有些人因为这些错误而无法编译:

c:\Documents and Settings\Administrator\Moje dokumenty\Downloads\sahud_src\IDirect3D8Hook.h(18) : error C2259: 'IDirect3DDevice8Hook' : cannot instantiate abstract class
        due to following members:
        'void IDirect3DDevice8::SetCursorPosition(UINT,UINT,DWORD)' : pure virtual function was not defined
        c:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\prerelease\d3d8.h(263) : see declaration of 'IDirect3DDevice8::SetCursorPosition'
IDirect3DDevice8Hook.cpp
c:\Documents and Settings\Administrator\Moje dokumenty\Downloads\sahud_src\IDirect3D8Hook.h(18) : error C2259: 'IDirect3DDevice8Hook' : cannot instantiate abstract class
        due to following members:
        'void IDirect3DDevice8::SetCursorPosition(UINT,UINT,DWORD)' : pure virtual function was not defined
        c:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\prerelease\d3d8.h(263) : see declaration of 'IDirect3DDevice8::SetCursorPosition'
IDirect3D8Hook.cpp
c:\Documents and Settings\Administrator\Moje dokumenty\Downloads\sahud_src\IDirect3D8Hook.h(18) : error C2259: 'IDirect3DDevice8Hook' : cannot instantiate abstract class
        due to following members:
        'void IDirect3DDevice8::SetCursorPosition(UINT,UINT,DWORD)' : pure virtual function was not defined
        c:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\prerelease\d3d8.h(263) : see declaration of 'IDirect3DDevice8::SetCursorPosition'

更清楚: c:... \ IDirect3D8Hook.h(18):错误C2259:'IDirect3DDevice8Hook':无法实例化抽象类

然后,如果我替换

标题

中的UINT
 STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y,DWORD Flags);

在这里

void __stdcall IDirect3DDevice8Hook::SetCursorPosition(int X, int Y, DWORD Flags)
{
    pD3DDevice->SetCursorPosition(X, Y, Flags);
}

它编译,但之后将输出DLL保存为d3d8.dll在游戏和运行的文件夹中, 我收到的错误就像应用程序运行不正确 0xC0000005

怎么了? Visual Studio的一些错误配置?

  • 有些哥们说,0xC0000005是因为某些ASM指令加载/存储到错误的内存地址。但是如果这个项目完成并准备好编译呢?

1 个答案:

答案 0 :(得分:0)

我修好了。 Speedo.cpp中存在一个错误,它试图加载错误的文件,导致符号文件出现问题。