Bon, je ne veus pas poluer le topic T-Bots alors je met ma question ici :
G commencé a regarder comment marche le KBot ( l´exemple de bot), j´ai donc créer un nouvel espace de travail sous visual, j´ai copier tous les . h et les . cpp
je compile pour voir, mais dans le linking il me dit ( atention, c´est long) :
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KTimer::GetTime(void)" ( ?GetTime@KTimer@@QAE_IXZ)
TBots.obj : error LNK2001: unresolved external symbol " class KTimer g_Timer" ( ?g_Timer@@3VKTimer@@A)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KLevel::Load(char *)" ( ?Load@KLevel@@QAE_IPAD@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: __thiscall KLevel::KLevel(class KRender *)" ( ??0KLevel@@QAE@PAVKRender@@@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KRender::Init(struct HWND__ *,unsigned __int32,unsigned __int32,unsigned __int32,bool)" ( ?Init@KRender@@QAE_IPAUHWND__@@_I11_N@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: __thiscall KRender::KRender(void)" ( ??0KRender@@QAE@XZ)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KRender::End(void)" ( ?End@KRender@@QAE_IXZ)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KLevel::Unload(void)" ( ?Unload@KLevel@@QAE_IXZ)
TBots.obj : error LNK2001: unresolved external symbol " public: __thiscall KLevel::~KLevel(void)" ( ??1KLevel@@QAE@XZ)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KRender::Flip(struct HWND__ *,class KRect *)" ( ?Flip@KRender@@QAE_IPAUHWND__@@PAVKRect@@@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KRender::EndScene(void)" ( ?EndScene@KRender@@QAE_IXZ)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KLevel::Draw(unsigned __int32)" ( ?Draw@KLevel@@QAE_I_I@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KRender::BeginScene(void)" ( ?BeginScene@KRender@@QAE_IXZ)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall KRender::DrawTextA(__int32,__int32,char *)" ( ?DrawTextA@KRender@@QAE_I_H0PAD@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: void __thiscall KBot::Display(class KFPt &,class KFPt &)" ( ?Display@KBot@@QAEXAAVKFPt@@0@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: unsigned __int32 __thiscall
KRender::DrawQuad(__int32,__int32,__int32,__int32,
struct IDirect3DTexture8 *,unsigned __int32,unsigned __int32,enum _KRMODE,float *,float *)" ( ?DrawQuad@KRend
er@@QAE_I_H000PAUIDirect3DTexture8@@_I2W4_KRMODE@@
PAM4@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: void __thiscall KItem::SetPos(class KPt &,unsigned __int32)" ( ?SetPos@KItem@@QAEXAAVKPt@@_I@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: bool __thiscall KLevel::CanMove(__int32,__int32)" ( ?CanMove@KLevel@@QAE_N_H0@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: class std::list<class KItem *,class std::allocator<class KItem *> > & __thiscall KLevel::GetpSightItem(class KPt &,__int32)"
(?GetpSightItem@KLevel@@QAEAAV?$list@PAVKItem@@V?$
allocator@P
AVKItem@@@std@@@std@@AAVKPt@@_H@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: class KCell * __thiscall KLevel::GetpSightCell(class KPt &,__int32)"
(?GetpSightCell@KLevel@@QAEPAVKCell@@AAVKPt@@_H@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: virtual void __thiscall KBot::Display(void)" ( ?Display@KBot@@UAEXXZ)
TBots.obj : error LNK2001: unresolved external symbol " public: virtual __thiscall KItem::~KItem(void)" ( ??1KItem@@UAE@XZ)
TBots.obj : error LNK2001: unresolved external symbol " public: static class KPt __cdecl KLevel::GetDeltaPos(enum _KBOTMOVEDIR)"
(?GetDeltaPos@KLevel@@SA?AVKPt@@W4_KBOTMOVEDIR@@@Z
)
TBots.obj : error LNK2001: unresolved external symbol " public: class KItem * __thiscall KLevel::GetpItem(unsigned __int32,unsigned __int32)" ( ?GetpItem@KLevel@@QAEPAVKItem@@_I0@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: static class KPt __cdecl KLevel::GetDeltaAttack(enum _KBOTATTACKTARGET)"
(?GetDeltaAttack@KLevel@@SA?AVKPt@@W4_KBOTATTACKTA
RGET@@@Z)
TBots.obj : error LNK2001: unresolved external symbol " public: __thiscall KBot::KBot(class KRender *,class KLevel *)" ( ??0KBot@@QAE@PAVKRender@@PAVKLevel@@@Z)
Debug/Ruffi_bot.dll : fatal error LNK1120: 26 unresolved externals
Error executing link.exe.
Ruffi_bot.dll - 27 error(s), 0 warning(s)
J´ai du oublier des truc, mais je ne sais pas quoi.
Arf, tu as du foirer dans ton Workspace. Tu as ajouté des fichiers inutiles.
Procedure pour créer un Bot sous Visual C++ 6.0:
1 - Ouvrir le Workspace TBots.dsw
2 - Add New Project -> Win32 Dynamic Link Library -> Choisir " A Simple DLL Project", Normalement ca doit generer le DllMain et le StdAfx.
3 - Ajouter les 3 fonctions a exporter ( la macro API depend du nom de la DLL que vous aurez choisi):
extern " C" KBOT_API char* GetpBotName();
extern " C" KBOT_API KBotInfo* GetpInfos();
extern " C" KBOT_API KBotAction* GetpBotAction( KBot* pBot, KCell* pMapCell, s32 MapWidth, s32 MapHeight, list<KItem*>& Items ) ;
Normalement ca devrait compiler.
G pas mal loupé ce ke j´ai fait ( je me suis trompé de fichier
)
Merci de ton aide
Bon, depuis tout a l´heur j´essaye de comprendre le fonctionement de la dll (
) , et j´essaye de faire des truc (
) et je regarde se que sa fait (
) ... Bon, en perseverant j´espere ariver a fair quelque chose. A quand une version plus commenté de TBot?
Zut zut, moi quand je compile y a tout qui foire... je suis sous devcpp...
je crois qu´il manque un fichier sous Devcpp : crtdbg.h
En gros se serait cool si on avait une version un peu plus commenté...
crtdbg.h est include pour _ASSERT();
Si y´a ne compile pas, vire l´include et change la macro :
par :
Pour la version commentée, je bosse actuellement dessus.
Merci pour la futur version commenté. Mais avant ke j´aille plus loin, tu me conseil de continuer sous VisualC++ ou ke je passe à devC++? ( sachant ke j´ai VC++ Introductorie edition qui me met un salle message a chaque foi)
Il faudrait que tu continues quand meme sur Visual C++, car on a pas encore eu le temps de faire des tests sur d´autres compilateurs.
ce genre de messages, c´est un fichier oublié
ça peut etre un dll, mais ça peut etre aussi une lib, ou un . obj si tu n´as pas lié la lib...
( mais je pense + dll ou lib)
G fini ma premiere version de mon bot ( meme si l´AI est TRES limité) ![]()
Cool!
Tu l´as fait sous Visual C++?
Euh sinon, les fonctions de la DLL ont été modifié, donc il faudrat le changer dans ta DLLBot dès que la prochaine version sera disponible. Mais bon, c´est normal tant que le jeu n´est pas fini...
Ruffi, peux tu nous envoyer ton bot qu´on puisse le tester et le mettre dans la prochaine release?
Envoie le ici : tbots@zythum-project.com
sa y est c´est envoyé.
Oui, je l´ai fait sous VC++ ( si tu veu la source, je te l´envoi)
Je suis en train de dl la derniere version de TBot et j´essayerai d´en fair un plus intelligent.
J´ai vu dans votre site que vous allez faire des tutoriaux. Se serai bien que vous mettiez toutes les fonction permetant de recuperer des donné exterieur aux robot ( nom de la fontion, ce qu´elle renvoi...), car mon bot est aveugle pour l´instant.
Euh, j´ai toujours rien recu. Par contre, il me faut imperativment les sources car je ne vais lancer la DLL comme ca, c´est beaucoup trop dangereux.
Pour la doc, on va faire çà, promis.
ok, je t´envoi la source
Sinon, j´ai encore un pb : j´ai voulu metre les prog de mon bot dans la derniere version, mais il me fait :
error C2491: ´GetpBotName´ : definition of dllimport function not allowed
error C2491: ´GetpInfos´ : definition of dllimport function not allowed
error C2491: ´GetpBotAction´ : definition of dllimport function not allow
G essayé en faisant un copier/coller de TBot, et il me fait toujour la meme ereur ( "definition of dllimport function not allowed"). Quelqu´un peu m´aider ?
vérifie que tu as bien :
KBOT_EXPORTS
KBOT_API
étant tes propres def
et dans tes Project Settings>C-C++>Preprocessor definitions, à la fin de la ligne tu dois avoir Quelquechose_EXPORT
il faut le même dans le . h et dans les settings
En fait, j´ai rajouté le workspace de l´ancienne version et sa marche.
Mais maintenant j´ai un probleme ( encore ! ) mais avec le " simulateur" des bots : dans la liste, quand je choisi " KBot the killer" il prend mon dll,et inversemment.
En plus pour mon dll il ne trouve pas la fonction GetpBotAction, alors que dans l´ancienne version il la trouvait.
Sinon, je suis le seul a faire des bots ( ou a avoir des problemes avec)?