gpt4 book ai didi

c++ - “… already defined in *.obj”,但我没有在同一范围内两次定义任何变量

转载 作者:行者123 更新时间:2023-12-02 10:23:32 24 4
gpt4 key购买 nike

我试图进入Gamehacking,并从一个简单的freecam hack开始。
在清理了一些代码并为某些代码制作了函数和不同文件后,我遇到了一个问题。
我总是得到错误:

我已经搜索了问题,但没有找到与我的问题相似的东西,其中大多数都具有相同名称的多个定义,但我没有这些定义,

我还注释掉了C-。cpp中的全局变量,并在FreeCamFunc.cpp中将我的速度变量命名为不同的名称,但这并没有解决。
C--.cpp

#include <iostream>
#include <Windows.h>
#include <winuser.h>
#include "FreeCamFunc.cpp"
using namespace std;

extern HANDLE g_program;

int main()
{
double speed = 0.5;

DWORD pid = 0x0000452C;
g_program = OpenProcess(PROCESS_ALL_ACCESS, false, pid);

LPVOID varAdress = (LPVOID)0x8CAC99E0;

cout << "Ready" << endl;
while (true)
{
if (GetKeyState('Q') & 0x8000)
IncY(varAdress, speed);
if (GetKeyState('Z') & 0x8000)
DecY(varAdress, speed);
}
}
FreeCamFunc.cpp
#include <Windows.h>

HANDLE g_program;

void IncY(LPVOID varAdress, double speedup)
{
double varValY = 0.0;
ReadProcessMemory(g_program, varAdress, &varValY, sizeof(varValY), NULL);
varValY += speedup;
WriteProcessMemory(g_program, varAdress, (LPCVOID)& varValY, sizeof(varValY), NULL);
}

void DecY(LPVOID varAdress, double speeddown)
{
double varValY = 0.0;
ReadProcessMemory(g_program, varAdress, &varValY, sizeof(varValY), NULL);
varValY -= speeddown;
WriteProcessMemory(g_program, varAdress, (LPCVOID)& varValY, sizeof(varValY), NULL);
}

我希望一切都很好,因为我只使用了一个全局变量,而其他变量都在范围内,但是错误却说明了不同
"Fehler LNK2005 "void __cdecl DecY(void *,double)" (?DecY@@YAXPAXN@Z) ist bereits in C--.obj definiert. *\C--\FreeCamFunc.obj"
"Fehler LNK2005 "void __cdecl IncY(void *,double)" (?IncY@@YAXPAXN@Z) ist bereits in C--.obj definiert. *\C--\FreeCamFunc.obj"
"Fehler LNK2005 "void * g_program" (?g_program@@3PAXA) ist bereits in C--.obj definiert. *\C--\FreeCamFunc.obj"

说:...已经在c-。obj中定义

Fehler  LNK1169 Mindestens ein mehrfach definiertes Symbol gefunden.    C-- *\C--.exe

说:找到至少一个重复定义的符号

最佳答案

您要包括头文件而不是源文件。您还应该将定义和声明分成适当的cpp和hpp文件。我在这里为您做到了:

main.cpp

#include <iostream>
#include <Windows.h>
#include <winuser.h>
#include "FreeCamFunc.h"
using namespace std;

extern HANDLE g_program;

int main()
{
double speed = 0.5;

DWORD pid = 0x0000452C;
g_program = OpenProcess(PROCESS_ALL_ACCESS, false, pid);

LPVOID varAdress = (LPVOID)0x8CAC99E0;

cout << "Ready" << endl;
while (true)
{
if (GetKeyState('Q') & 0x8000)
IncY(varAdress, speed);
if (GetKeyState('Z') & 0x8000)
DecY(varAdress, speed);
}
}

FreeCamFunc.h
#pragma once
#include <Windows.h>

void IncY(LPVOID varAdress, double speedup);

void DecY(LPVOID varAdress, double speeddown);

FreeCamFunc.cpp
#include "FreeCamFunc.h"

HANDLE g_program;

void IncY(LPVOID varAdress, double speedup)
{
double varValY = 0.0;
ReadProcessMemory(g_program, varAdress, &varValY, sizeof(varValY), NULL);
varValY += speedup;
WriteProcessMemory(g_program, varAdress, (LPCVOID)& varValY, sizeof(varValY), NULL);
}

void DecY(LPVOID varAdress, double speeddown)
{
double varValY = 0.0;
ReadProcessMemory(g_program, varAdress, &varValY, sizeof(varValY), NULL);
varValY -= speeddown;
WriteProcessMemory(g_program, varAdress, (LPCVOID)& varValY, sizeof(varValY), NULL);
}

关于c++ - “… already defined in *.obj”,但我没有在同一范围内两次定义任何变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58085797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com