Reference non définie pendant le linkage
Bonjour !
C::B me sort ces erreurs:
Code:
1 2 3 4 5
|
||=== Client, Debug ===|
obj\Debug\Session.o:D:\C++\projects\Client\Session.cpp|60|undefined reference to `unsigned short PacketReader::Read<unsigned short>()'|
obj\Debug\Threads.o:D:\C++\projects\Client\Threads.cpp|19|undefined reference to `CreateSDLUserEvent(int, int, int)'|
||=== Build finished: 2 errors, 0 warnings ===| |
L'erreur doit etre probablement bénine, mais bon, c'est souvent pour ca qu'o arrive pas a les resoudres :D
Voici l'appel dans Session.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#include "Session.h"
/* plus de code ici */
void Session::ReceivePacket()
{
ReceiveData(_packetlen);
_pr = PacketReader();
_pr.Packet(_buffer, _packetlen);
_header = _pr.Read<uint16_t>();
if(headers[_header] != NULL)
{
headers[_header]((_pr));
}
} |
Dans Session.h, il y a:
Code:
1 2 3 4 5 6 7
|
#include "PacketReader.h"
// d'autres trucs
map<uint16_t, void (*)(PacketReader &)> headers;
PacketReader _pr;
unsigned char* _buffer; |
Dans PacketReader.h il y a:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
class PacketReader
{
public:
PacketReader();
void Packet(unsigned char * pbuffer, int len);
virtual ~PacketReader();
template <typename T>
T Read();
unsigned char * buffer;
int pos, length;
protected:
private:
}; |
Etrangement, j'ai un deuxieme problem dans Threads.cpp
_buf = CreateSDLUserEvent(code, arg1, arg2);
Alors que dans le .h, j'inclus le fichier ou il y a cette fonction...
J'ai tenté ctrl+f11, ne marche pas.
J'ai tenté de supprimer du projet les fichiers, et de le re-ajouter, ne marche pas non plus.
Que faut-il faire?
merci, nico