Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
02.08.2010, 22:22
RC



hallo!
ich versuche gerade den hl2mp src zu compilen mit Visual c++ 2005 express.
das win sdk will mich zwingen ca 1gb auf c: zu installieren. leider ist meine c voll und hab auch keine andere festplatte oder geld um c zu ersetzen.
wenn ich versuche zu compilen ist die einzige fehlermeldung, dass er winerror.h nicht finden kann.

ich habe versuche diesen code in eine von mir erstellte winerror.h zu kopieren und diese in einem /bin ordner in die vc++ directoris eingebunden, aber der fehler blieb.
http://msdn.microsoft.com/en-us/library/ms819772.aspx

vermutlich ist die winerror.h in einem unterordner von bin.
wäre nett wenn mir jemand sagen könnte in welchem und ob ich überhaupt irgendwie drum drum tricksen kann und ohne das win sdk compilen kann.

--


Dieser Beitrag wurde am 02.08.2010 um 22:33 von RC bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
02.08.2010, 22:45
Bluthund



Header werden in den Include-Verzeichnissen gesucht und nicht in denen fuer Binaerdateien. Man darf aber wohl getrost davon ausgehen, dass Valve etwas mehr als nur ein paar Error-Makros aus dem Platform-SDK gebraucht hat.
Wenn du das Zielverzeichnis des Platform-SDKs tatsaechlich nicht aendern kannst, lege einfach einen symbolischen Verzeichnis-Link (mklink /d) im Programme-Verzeichnis an und leite damit die Installation auf eine andere Platte um.
Raeum mal ein bisschen auf und schaff Platz, die intermediaeren obj-Dateien, die am Ende gelinkt werden, nehmen beim SourceSDK auch nochmal ca. 300MB in Anspruch.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 03.08.2010 um 01:15 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
03.08.2010, 10:19
RC



mein c: ist leider nur 16 GB, da wirds nichts werden mit aufräumen.
evlt kann ich den nötigen platz schaffen, aber ich vermute es ist nicht sehr klug c: bis aufs letzte MB vollzustopfen. kann man nicht dannach einfach das sdk auf d: kopieren und dann in vc dorthin verlinken?

/edit: jetzt sucht er nach windows.h, wird wohl ewig so weitergehn.

--


Dieser Beitrag wurde am 03.08.2010 um 10:43 von RC bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
03.08.2010, 11:59
Bluthund



Also ist nicht deine Platte voll sondern eine Partition darauf... Dann kannst du den Part nutzen den ich bei der Revision meines Posts gestrichen hatte (weil du oben geschrieben hattest, dass die Platte voll ist; Partition != Platte)

Zitat:
Wenn du das Zielverzeichnis des Platform-SDKs tatsaechlich nicht aendern kannst, lege einfach einen symbolischen Verzeichnis-Link (mklink /d) im Programme-Verzeichnis an und leite damit die Installation auf eine andere Platte um.
Das Verzeichnis, heisst hier bei meiner Installation "Microsoft SDKs".

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 03.08.2010 um 13:11 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
03.08.2010, 12:05
RC



die festplatte ist 16 GB groß und die einzige partition darauf auch.

--

zum Seitenanfang zum Seitenende Profil || Suche
005
03.08.2010, 12:07
Bluthund



Zitat:
leider ist meine c voll und hab auch keine andere festplatte oder geld um c zu ersetzen.
Emphasis added. Darauf war "Partition != Platte" bezogen.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 03.08.2010 um 12:09 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
03.08.2010, 13:01
RC



auf die dokumentation und die samples kann ich doch verzichten oder?
für meine zwecke reicht es doch wenn ich die develoer tools installiere?

/edit: scheint zu funktionieren, aber sollte der src vom sdk ohne änderungen nicht ohne fehler zu compilen sein?

--


Dieser Beitrag wurde am 03.08.2010 um 13:29 von RC bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
03.08.2010, 13:35
Bluthund



http://developer.valvesoftware.com/wiki/Compiling_under_VS2005

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
008
03.08.2010, 13:51
RC



ich habe alles was auf der seite steht beachtet und trotzdem kann ich weder hl2mp compilen noch den mod template.

hl2mp client:
Quellcode:1>d:\mod\src\game\client\spritemodel.cpp(442) : error C3861: 'IsBIK': identifier not found hlmp server:
Quellcode:1>weapon_slam.obj : error LNK2019: unresolved external symbol "public: void __thiscall CTripmineGrenade::AttachToEntity(class CBaseEntity *)" (?AttachToEntity@CTripmineGrenade@@QAEXPAVCBaseEntity@@@Z) referenced in function "public: void __thiscall CWeapon_SLAM::TripmineAttach(void)" (?TripmineAttach@CWeapon_SLAM@@QAEXXZ)
1>.\Debug_hl2mp/Server.dll : fatal error LNK1120: 1 unresolved externals
mod template client+server findet kein weapon_sdkbase.h.
ich denke inzwischen sollte klar sein, dass ich nichts vom coden verstehe.
ich möchte aber lediglich den unveränderten sourcecode compilen :(

/edit: nachdem ich mir die weapon_sdkbase.h anderweitig besorgt hatte bekomme ich den im sdk beschriebenen intrin.h error, nachdem ich ihn wie beschrieben gefixt habe, bekomme ich hunderte syntax errors in der intrin.h.

--


Dieser Beitrag wurde am 03.08.2010 um 14:20 von RC bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
03.08.2010, 14:24
Bluthund



Wenn du nur den unveraenderten Code kompilierst, kannst du auch gleich die Original-DLLs nutzen.

Zum ersten Fehler: Normalerweise hat CEngineSprite eine Memberfunktion namens IsBIK. In meinem unangetasteten OB-SDK wird die Funktion aber nicht von Zeile 442 aus referenziert. Evtl. die SDK-Dateien nochmal neu exportieren lassen?

Fehler 2: Die Memberfunktion AttachToEntity der Klasse CTripmineGrenade wurde deklariert und referenziert (in CWeapon_SLAM::TripmineAttach()) aber nicht definiert.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 03.08.2010 um 14:27 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
010
03.08.2010, 14:46
RC



ich habe schon vor einige änderungen vorzunehmen, aber erstmal will ich fehlerfrei compilen könnnen.

die sdk dateien hab ich schon mehrfach neu exportieren lassen und vorher den sdk content erneuert, hat aber nichts geholfen.
wie gesagt ich habe keine ahnung vom coden und werde 90% der fehler nicht selbst beheben können. ich versteh nicht warum das ganze ohne änderungen soviel probleme macht.

/edit: client ließ sich jetzt compilen (mit einer leeren intrin.h :O), bei der server bekomme ich:

Quellcode:1>d:\mod\src\public\bitvec.h(42) : warning C4164: '_BitScanForward' : intrinsic function not declared
1>d:\mod\src\public\bitvec.h(58) : error C3861: '_BitScanForward': identifier not found
ich vermute intrin=intrinsic, und die leere intrin.h verursacht den ersten fehler.

/edit2:
habe die intrin.h wieder "gefüllt" und nur die zeilen gelöscht, die einen syntax error angezeigt bekommen. jetzt bleib ich wieder bei diesem fehler stecken,
wenn es einfach zu erklären/fixen ist, wäre es nett wenn mir jemand sagen könnte wie.

Quellcode:1>weapon_slam.obj : error LNK2019: unresolved external symbol "public: void __thiscall CTripmineGrenade::AttachToEntity(class CBaseEntity *)" (?AttachToEntity@CTripmineGrenade@@QAEXPAVCBaseEntity@@@Z) referenced in function "public: void __thiscall CWeapon_SLAM::TripmineAttach(void)" (?TripmineAttach@CWeapon_SLAM@@QAEXXZ)
1>.\Release_hl2mp/Server.dll : fatal error LNK1120: 1 unresolved externals

--


Dieser Beitrag wurde am 03.08.2010 um 19:35 von RC bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
04.08.2010, 17:37
RC



hat sich erledigt.
aber trotzdem würde ich gerne von der mod template aus starten und nicht hl2mp, was aber ja daran scheitert, dass die weapon_sdkbase.h fehlt...

--

zum Seitenanfang zum Seitenende Profil || Suche
012
04.08.2010, 18:58
Bluthund



Irgendwas scheint mit dem SDK, was du da exportiert hast nicht in Ordnung zu sein. Probier mal beim Export "source code only" auszuwaehlen.

Meine TripmineAttach-Memberfunktion von CWeapon_SLAM ruft die Memberfunktion, die der Linker bei dir beanstandet ueberhaupt nicht auf. Ich habe auch gerade mal schnell durchs SDK geschaut und konnte in der Vererbungshierarchie von CTripmineGrenade auch keine solche Funktion finden -- nicht einmal deren Deklaration (ergo muesste da schon der Compiler wegen eines nicht deklarierten Bezeichners Gift und Galle speien).

zur Referenz:
Quellcode:void CWeapon_SLAM::TripmineAttach( void )
{
    CBaseCombatCharacter *pOwner  = GetOwner();
    if (!pOwner)
    {
        return;
    }

    m_bAttachTripmine = false;

    Vector vecSrc = pOwner->Weapon_ShootPosition();
    Vector vecAiming = pOwner->EyeDirection3D();

    trace_t tr;

    UTIL_TraceLine( vecSrc, vecSrc + (vecAiming * 128), MASK_SOLID, pOwner, COLLISION_GROUP_NONE, &tr );
    
    if (tr.fraction < 1.0)
    {
        CBaseEntity *pEntity = tr.m_pEnt;
        if (pEntity && !(pEntity->GetFlags() & FL_CONVEYOR))
        {
            QAngle angles;
            VectorAngles(tr.plane.normal, angles);
            angles.x += 90;
            
            CBaseEntity *pEnt = CBaseEntity::Create( "npc_tripmine", tr.endpos + tr.plane.normal * 3, angles, NULL );

            CTripmineGrenade *pMine = (CTripmineGrenade *)pEnt;
            pMine->m_hOwner = GetOwner();

            pOwner->RemoveAmmo( 1, m_iSecondaryAmmoType );

            EmitSound( "Weapon_SLAM.TripMineAttach" );
        }
    }
}
Wenn dein Code grundlegend anders aussah, der den Fehler produziert hat, stimmt da definitiv irgendetwas nicht (koennte evtl. etwas abweichen, da mein letzter SDK-Export schon eine Weile zurueck liegt [nach dem Release der OB] und Steam unter Wine laesst mich auch kein aktuelles exportieren).

Wie gesagt: Versuch es mal mit "source code only" beim Export. Das Ergebnis kannst du ja dann mit dem Ergebnis des "mod template" entsprechend zusammenfuehren.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 04.08.2010 um 19:02 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
013
04.08.2010, 20:39
RC



source code only ist doch aber singelplayer oder nicht?
ich hab jetzt einfach den gesamten part auskommentiert in der tripmine, gibt keine errors mehr und sollte nicht stören, da ich die tripmine nicht verwenden werde.

--

zum Seitenanfang zum Seitenende Profil || Suche
014
05.08.2010, 00:00
Bluthund



"source code only" enthaelt saemtlichen Quelltext - also sowohl SP als auch MP - (z.B. auch deine verschollene weapon_sdkbase.h und das dazugehoerige cpp-File) und produziert afaik unveraendert zumindest keine Compiler- und/oder Linker-Fehler (ausser den im DevWiki dokumentierten). Wenn du SP nicht haben moechtest, kannst du den GameMode ja einfach ausbauen.
Oder du machst es wie der Gaensemann, laesst den Code drin, verwendest ihn nicht aktiv und laesst die Community dann raetseln warum bspw. das HUD fehlt wenn man eine Map ueber den +map-Startparameter startet (ohne die deathmatch cvar zu setzen) :)

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 05.08.2010 um 00:01 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche