Начинающий
- Статус
- Оффлайн
- Регистрация
- 1 Ноя 2024
- Сообщения
- 13
- Реакции
- 0
"ссылка на неразрешенный внешний символ "unsigned long __cdecl z5(void *)" (?z5@@YAKPEAX@Z) в функции DllMain." Выдает такую ошибку, хотя вроде все нормально.
hook.cpp
dllmain.cpp
Почему так может быть?
hook.cpp
C++:
#include <d3d9.h>
#include <Windows.h>
#include <mutex>
#include "MinHook.h"
#include "imgui.h"
#include "imgui_impl_win32.h"
#include "imgui_impl_dx9.h"
#include "esp.hpp"
#include "imgui_menu.hpp"
#include "xorstr.hpp"
typedef HRESULT(__stdcall* t7)(LPDIRECT3DDEVICE9);
t7 y7 = nullptr;
HWND w7 = nullptr;
std::mutex mtx;
HRESULT __stdcall z3(LPDIRECT3DDEVICE9 pDevice) {
std::lock_guard<std::mutex> lock(mtx);
static bool x1 = false;
if (!x1) {
IMGUI_CHECKVERSION();
ImGui::CreateContext();
w7 = FindWindowA(XORSTR("Qt5QWindowIcon"), nullptr);
ImGui_ImplWin32_Init(w7);
ImGui_ImplDX9_Init(pDevice);
x1 = true;
}
ImGui_ImplDX9_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
z1();
z2();
ImGui::EndFrame();
ImGui::Render();
ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
return y7(pDevice);
}
DWORD WINAPI z5(LPVOID lpParam) {
WNDCLASSEXA wc = { sizeof(WNDCLASSEXA), CS_CLASSDC, DefWindowProcA,0,0,GetModuleHandle(NULL),NULL,NULL,NULL,NULL, XORSTR("DX"), NULL };
RegisterClassExA(&wc);
HWND hWnd = CreateWindowA(XORSTR("DX"), NULL, WS_OVERLAPPEDWINDOW, 100, 100, 300, 300, NULL, NULL, wc.hInstance, NULL);
LPDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS d3dpp = {};
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = hWnd;
LPDIRECT3DDEVICE9 pDev = nullptr;
if (pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDev) == D3D_OK) {
void** vtable = *reinterpret_cast<void***>(pDev);
MH_Initialize();
MH_CreateHook(vtable[42], z3, reinterpret_cast<void**>(&y7));
MH_EnableHook(vtable[42]);
pDev->Release();
}
pD3D->Release();
DestroyWindow(hWnd);
UnregisterClassA(XORSTR("DX"), wc.hInstance);
return 0;
}
C++:
#include <Windows.h>
DWORD WINAPI z5(LPVOID lpParam);
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID) {
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
DisableThreadLibraryCalls(hModule);
CreateThread(nullptr, 0, z5, hModule, 0, nullptr);
}
return TRUE;
}
Почему так может быть?