16,548
社区成员




namespace QQTangCheatEngine
{
class CQQTangClient
{
...
};
CQQTangClient g_QQTangClient;
}
#include "CCall.hpp"
namespace QQTangCheatEngine
{ class CQQTangCheatEngine
{
private:
CCall m_call;
public:
void CreateRoom ( )
{
m_call.CreateRoom ( );
}
};
}
namespace QQTangCheatEngine
{
class CCall
{
private:
public:
void CreateRoom()
{
typedef void(__cdecl *pCreateRoom)();
pCreateRoom(g_QQTangClient.m_CreateRoom)();
}
};
}
#include "QQTangCheatEngine.hpp"
using namespace QQTangCheatEngine;
extern QQTangCheatEngine::CQQTangClient g_QQTangClient;
CQQTangCheatEngine Engine;
//Global.cpp
#include "GlobalValue.h"
namespace QQTangCheatEngine
{
CQQTangClient g_QQTangClient;
CQQTangCheatEngine Engine;
BOOL IsPropToServer(ItemByGame PropID)
{...}
}
//Global.h
#pragma once
#include "QQTangCheatEngine.hpp"
extern QQTangCheatEngine::CQQTangClient g_QQTangClient;
extern QQTangCheatEngine::CQQTangCheatEngine Engine;
//CDialog_Tab4.cpp
void CDialog_Tab4::OnBnClickedBtnMapMatch1()
{
// TODO: 在此添加控件通知处理程序代码
Engine.SelMap(QQTangCheatEngine::MapID::MAP_CONTEST01_8, QQTangCheatEngine::GameModle::MODLE_MATCH);
}
错误提示:1>CDialog_Tab4.obj : error LNK2001: 无法解析的外部符号 "class QQTangCheatEngine::CQQTangCheatEngine Engine" (?Engine@@3VCQQTangCheatEngine@QQTangCheatEngine@@A)
//Maple.hpp:
namespace QQTangCheatEngine
{
class CItemByDrop
{
public:
BOOL IsPropToServer ( )
{
switch ( m_ItemID )
{
//81
case QQTangCheatEngine::GAME_TONGBI:
{
return TRUE;
}
//82
case QQTangCheatEngine::GAME_YINBI:
{
return TRUE;
}
......
}
}
};
BOOL IsPropToServer (ItemByGame PropID )
{
switch ( PropID )
{
//81
case QQTangCheatEngine::GAME_TONGBI:
{
return TRUE;
}
//82
case QQTangCheatEngine::GAME_YINBI:
{
return TRUE;
}
......
}
}
}
//global.h
#pragma once
#include "QQTangClient.hpp"
#include "QQTangCheatEngine.hpp"
extern QQTangCheatEngine::CQQTangClient g_QQTangClient;
extern QQTangCheatEngine::CQQTangCheatEngine Engine;
//global.cpp
#include "global.h"
namespace QQTangCheatEngine
{
CQQTangClient g_QQTangClient;
CQQTangCheatEngine Engine;
}
class CQQTangClient;
class CQQTangCheatEngine;
extern QQTangCheatEngine::CQQTangClient g_QQTangClient;
extern QQTangCheatEngine::CQQTangCheatEngine Engine;
Global.cpp:
namespace QQTangCheatEngine
{
CQQTangClient g_QQTangClient;
CQQTangCheatEngine Engine;
}
会提示“QQTangCheatEngine”: 不是类或命名空间名称,如何在Global.h里声明QQTangCheatEngine是一个名称空间呢#include "QQTangCheatEngine.hpp"
extern QQTangCheatEngine::CQQTangClient g_QQTangClient;
extern QQTangCheatEngine::CQQTangCheatEngine Engine;
Global.cpp:
namespace QQTangCheatEngine
{
CQQTangClient g_QQTangClient;
CQQTangCheatEngine Engine;
}
CDialog_Tab2.cpp包含了Global.h,因为要用到Gloabl.h里的extern声明
于是,编译错误提示1>CDialog_Tab2.obj : error LNK2005: "int __cdecl QQTangCheatEngine::IsPropToServer(enum QQTangCheatEngine::ItemByGame)" (?IsPropToServer@QQTangCheatEngine@@YAHW4ItemByGame@1@@Z) 已经在 CDialog_Tab1.obj 中定义
QQTangPackage.hpp:
class CNPCGETITEM :public CPACKAGEBASE
{
public:
ItemByGame m_PropID;//游戏道具enum ItemByGame
BOOL IsPropToServer ( )
{
switch ( m_PropID )
{
//81
case QQTangCheatEngine::GAME_TONGBI:
{
return TRUE;
}
//82
case QQTangCheatEngine::GAME_YINBI:
{
return TRUE;
}...
};
请教有什么好的使用方法吗,就是我有很多cpp文件包含了Global.h 因为要用到extern声明//QQTangClient.hpp
namespace QQTangCheatEngine
{
class CQQTangClient
{
...
};
//CQQTangClient g_QQTangClient;
}
//WANDERER.CPP
#include "QQTangCheatEngine.hpp"
using namespace QQTangCheatEngine;
CQQTangClient g_QQTangClient;
CQQTangCheatEngine Engine;