Derezzed
Derezzed

Reputation: 1113

Unresolve external symbol

I got this when compiling my DLL project:

Error 1 error LNK2019: unresolved external symbol "public: unsigned char * __thiscall CDetour::GetThisPtr(void)" (?GetThisPtr@CDetour@@QAEPAEXZ) referenced in function "void __stdcall zCharacter_OnDamagedHook(struct ZObject *,struct D3DXVECTOR3,int,int,float,float,int)" (?zCharacter_OnDamagedHook@@YGXPAUZObject@@UD3DXVECTOR3@@HHMMH@Z) C:\Users\Andrés\Documents\Visual Studio 2010\Projects\2k7_A-H\2k7_A-H\AntiLead.obj 2k7_A-H

Where I'm using "zCharacter_OnDamagedHook" is here:

void __stdcall zCharacter_OnDamagedHook(ZObject* pAttacker, D3DXVECTOR3 srcPos, int damageType, int weaponType, float fDamage, float fPiercingRatio, int nMeleeType) {
    zCharacter_OnDamagedDetour.Ret(true);
    std::string channelName = ZGameClient::GetInstance()->CurrentChannel;
    ZCharacter* victim = (ZCharacter*)zCharacter_OnDamagedDetour.GetThisPtr();
    ZCharacter* attacker = (ZCharacter*)pAttacker;
    ZCharacter* me = (ZCharacter*)ZGame::GetInstance()->pMyCharacter;
    if ((channelName.find("[No-Lead]") == std::string::npos) && (channelName.find("[No-Lead]") == std::string::npos)) {
        ZCharacterManager* charm = ZCharacterManager::GetInstance();
        if (((attacker == me) && (victim != me)) && (damageType != 5) && (damageType != 1) && (damageType != 2)) {
            zCharacter_OnDamagedDetour.Ret(false);
            MUID uidVictim;
            for (unsigned int i = 0; i < muidList.size(); ++i) {
                if (charm->Find(muidList[i]) == victim) {
                    uidVictim = muidList[i];
                    break;
                }
            }
            MCommand* pCmd = MCommand::Create(0xD3D9);
            pCmd->AddParameter(new MCommandParameterInt(uidVictim.lowId));
            pCmd->AddParameter(new MCommandParameterFloat(srcPos.x));
            pCmd->AddParameter(new MCommandParameterFloat(srcPos.y));
            pCmd->AddParameter(new MCommandParameterFloat(srcPos.z));
            pCmd->AddParameter(new MCommandParameterInt(damageType));
            pCmd->AddParameter(new MCommandParameterInt(weaponType));
            pCmd->AddParameter(new MCommandParameterFloat(fDamage));
            pCmd->AddParameter(new MCommandParameterFloat(fPiercingRatio));
            pCmd->AddParameter(new MCommandParameterInt(nMeleeType));
            MCommand::Post(pCmd);
        }

I really don't know what I'm doing wrong, also I hadn't got this error before so I hope someone could help me, thranks in advance.

Upvotes: 0

Views: 224

Answers (1)

Mark Ransom
Mark Ransom

Reputation: 308081

Your CDetour class has declared a member function GetThisPtr but none of your source (.cpp) files has provided a definition.

Since you didn't show any of that code it's impossible to comment further.

Upvotes: 3

Related Questions