J'ai eu une erreur de lien lorsque j'ai essayé d'accéder à un vecteur en dehors de mon thread. Ma conception est la suivante: lorsque je reçois un message d'un client, je souhaite que le massage ou les données soient dans ma file d'attente de données pour une opération ultérieure. Mais je ne peux pas les faire travailler. Voici mes codes:Problème: Accès au vecteur dans un thread
fichier .cpp:
// Inside the recv thread
start:
err = recvfrom(RecvSocket, lpData->RecvBuf, BufLen, 0, (SOCKADDR *)&lpData->SenderAddr, &SenderAddrSize);
//lpData is used to access Recv Structure which stores the attributes of the server and client.
switch(lpData->port)
{
case 6516:
{
BuffStack1.push_back(lpData->RecvBuf);
break;
}
case 6517:
{
break;
}
case 6518:
{
break;
}
}
goto start;
.h:
class CUdpSocket
{
public:
CUdpSocket(void);
~CUdpSocket(void);
void ServerRecv(int port);
void ClientSend(const char *ip, int port, const char *buff);
unsigned static __stdcall ServerRecvThread(void *arguments);
unsigned static __stdcall ClientSendThread(void *arguments);
CString static Itoa(int data);
void Mix();
private:
RecvStruct *pRecvData;
SendStruct *pSendData;
vector<HANDLE>threadStl;
static vector<char*>BuffStack1; // Here is my stack vector
static vector<char*>BuffStack2;
static vector<char*>BuffStack3;
HANDLE hThread;
unsigned threadID;
static BufferData *ptrBufferData;
};
Je suis un peu confus si je dois mettre statique ou non. Et quand je mets statique, l'erreur sera:
error LNK2001: unresolved external symbol "private: static class std::vector<char *,class std::allocator<char *> > CUdpSocket::BuffStack1" ([email protected]@@[email protected][email protected]@[email protected]@@[email protected]@A)
Et si je ne l'ai pas mis déclaration statique, l'erreur dit:
error C2228: left of '.push_back' must have class/struct/union
S'il vous plaît aider.
Merci.
Je ne peux pas les faire fonctionner. Pourriez-vous s'il vous plaît me montrer comment? –
Pouvez-vous être plus précis? Quelle erreur obtenez vous? Qu'est-ce qui ne fonctionne pas en particulier? – templatetypedef
Peu importe. Je l'ai déjà compris. Merci pour ton aide. –