C++ &引用;。。。已在*.obj”中定义;但我不会在同一范围内两次定义任何var

C++ &引用;。。。已在*.obj”中定义;但我不会在同一范围内两次定义任何var,c++,windows,global-variables,C++,Windows,Global Variables,我试图进入游戏黑客,并从一个简单的免费视频黑客开始。 在清理了一些代码并为一些代码创建函数和不同的文件之后,我遇到了一些问题。 我总是会出错: 我已经搜索了这个问题,但没有找到任何与我的问题相似的东西大多数问题都有多个同名的定义,但我没有 我还在C--.cpp中注释了我的全局变量,并在FreeCamFunc.cpp中将我的速度变量命名为不同的名称,但这并没有解决它 C--.cpp #包括 #包括 #包括 #包括“FreeCamFunc.cpp” 使用名称空间std; 外部处理g_程序; int

我试图进入游戏黑客,并从一个简单的免费视频黑客开始。 在清理了一些代码并为一些代码创建函数和不同的文件之后,我遇到了一些问题。 我总是会出错:

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

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

C--.cpp

#包括
#包括
#包括
#包括“FreeCamFunc.cpp”
使用名称空间std;
外部处理g_程序;
int main()
{
双速=0.5;
DWORD pid=0x0000452C;
g_程序=OpenProcess(PROCESS_ALL_ACCESS,false,pid);
LPVOID varAdress=(LPVOID)0x8CAC99E0;

cout您希望包含头文件而不是源文件。您还应该将定义和声明分离到适当的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);
    }
}
#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);
}

我想说我想使用该文件的函数通常,包括头文件,
#包括“FreeCamFunc.h”
,而不是.cpp文件。您编译.cpp文件并链接到其.obj文件。
#include
有效地将包含文件的副本放置在包含文件中。这意味着FreeCamFunc.cpp中定义的所有函数、变量等都在C--.cpp中重复。包含头文件。编译cpp文件。然后将.obj文件链接到gether.IDE为您完成后两个步骤。@Valon_Inc“我通过它说我想使用该文件的函数”您如何定义“use”这个词?因为,
#include
,只需简单地复制粘贴
#include
指令中的文件内容,就可以代替
#include
指令。请自己尝试一下。现在您明白了,为什么有多个定义具有相同的名称?是的,这很有效,非常感谢并为这个初学者的问题感到抱歉。
#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);
    }
}
#pragma once
#include <Windows.h>

void IncY(LPVOID varAdress, double speedup);

void DecY(LPVOID varAdress, double speeddown);
#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);
}