挂钩DirectX游戏

Hook for DirectX game

本文关键字:游戏 DirectX 挂钩      更新时间:2023-10-16

所以。我在这里找到了一个不错的开源项目来钩住旧游戏GTA Vice City(我想在游戏屏幕上画一些图像,比如HUD)我刚刚安装了DOTNET2002,并试图编译d3d8库项目(Visual Studio已经包含DirectX 8.1库和标头),但我收到的错误很少。有些人编译得很好,有些人因为这些错误而无法编译:

c:Documents and SettingsAdministratorMoje dokumentyDownloadssahud_srcIDirect3D8Hook.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 FilesMicrosoft Visual Studio .NETVc7PlatformSDKIncludeprereleased3d8.h(263) : see declaration of 'IDirect3DDevice8::SetCursorPosition'
IDirect3DDevice8Hook.cpp
c:Documents and SettingsAdministratorMoje dokumentyDownloadssahud_srcIDirect3D8Hook.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 FilesMicrosoft Visual Studio .NETVc7PlatformSDKIncludeprereleased3d8.h(263) : see declaration of 'IDirect3DDevice8::SetCursorPosition'
IDirect3D8Hook.cpp
c:Documents and SettingsAdministratorMoje dokumentyDownloadssahud_srcIDirect3D8Hook.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 FilesMicrosoft Visual Studio .NETVc7PlatformSDKIncludeprereleased3d8.h(263) : see declaration of 'IDirect3DDevice8::SetCursorPosition'

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

然后,如果我更换

标头中的int到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指令加载/存储到错误的内存地址。但是,如果这个项目已经完成并准备好编译,该怎么办

我已经修复了它。Speedo.cpp中有一个错误,它试图加载错误的文件,导致Symbol文件出现问题。