2017-01-23 80 views
0

我有這個惱人的錯誤,並沒有線索如何解決這個問題;我正在使用Visual Studio 2015,社區版本。任何想法如何解決LNK2019 - 無法解析的外部符號,錯誤?

我正在製作一個C/C++控制檯應用程序,該應用程序附加到GTA5.exe並使用地址修改健康狀況。

這是錯誤:

Error LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" ([email protected]@YAHXZ) GTAConsole 

下面是截圖: http://prntscr.com/dzbpsa.png

GTAConsole.cpp代碼:

#include "stdafx.h" // Precompiled header 

#include <Windows.h> // Allows window editing; setting text, etc 
#include <iostream> 
#include <TlHelp32.h> 
#include <conio.h> 

using namespace std; // Allows use of std:: 

__int64 GetModuleBaseAddress(LPCWSTR szProcessName, LPCWSTR szModuleName) 
{ 
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
PROCESSENTRY32 pe32; 

if (hSnap == INVALID_HANDLE_VALUE) 
{ 
    return 0; 
} 
pe32.dwSize = sizeof(PROCESSENTRY32); 
if (Process32First(hSnap, &pe32) == 0) 
{ 
    CloseHandle(hSnap); 
    return 0; 
} 

do 
{ 
    if (lstrcmp(pe32.szExeFile, szProcessName) == 0) 
    { 
     int PID; 
     PID = pe32.th32ProcessID; 

     HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID); 
     MODULEENTRY32 xModule; 

     if (hSnap == INVALID_HANDLE_VALUE) 
     { 
      return 0; 
     } 
     xModule.dwSize = sizeof(MODULEENTRY32); 
     if (Module32First(hSnap, &xModule) == 0) 
     { 
      CloseHandle(hSnap); 
      return 0; 
     } 

     do 
     { 
      if (lstrcmp(xModule.szModule, szModuleName) == 0) 
      { 
       CloseHandle(hSnap); 
       return (__int64)xModule.modBaseAddr; 
      } 
     } while (Module32Next(hSnap, &xModule)); 
     CloseHandle(hSnap); 
     return 0; 
    } 
} while (Process32Next(hSnap, &pe32)); 
CloseHandle(hSnap); 
return 0; 
} 

int Main() 
{ 

wchar_t* WindowName = (L"Grand Theft Auto V"); 
wchar_t* GameTitle = (L"GTA5.exe"); 

HWND WindowHandle = FindWindow(NULL, WindowName); 
__int64 BaseAddress = GetModuleBaseAddress(GameTitle, GameTitle); 

DWORD ProcessID; 
GetWindowThreadProcessId(WindowHandle, &ProcessID); 

HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, ProcessID); 

std::cout << "[sucess]: GTAV.exe has been found!" << std::endl; 

for (;;) 
{ 
    if (GetAsyncKeyState(VK_NUMPAD1)) 
    { 
     Sleep(250); 

     float Health = 200; 
     __int64 pPlayerInformationAddress = 0; 

     DWORD SocialClubPlayerInformation = 0x01ED6D88; 
     DWORD HealthOffset = 0x280; 

     ReadProcessMemory(pHandle, (void*)(BaseAddress +  SocialClubPlayerInformation), &pPlayerInformationAddress, sizeof(pPlayerInformationAddress), NULL); 
     ReadProcessMemory(pHandle, (void*)(pPlayerInformationAddress + HealthOffset), &Health, sizeof(Health), NULL); 

     std::cout << Health << std::endl; 
    } 
} 

Sleep(1); 
} 

如果有人可以幫助,那簡直是真棒!

+0

'INT主()'應該是'INT主()'。 'C++'區分大小寫。 – drescherjm

+0

好吧,我會試試看。謝謝! – ThatUnknownGuy

+0

我忘了main()是區分大小寫的,哈哈。謝謝。 – ThatUnknownGuy

回答

1

改變線INT Main() 通過main()

+0

好的,我會試試,非常感謝。 – ThatUnknownGuy

相關問題