2010-09-19 55 views
0

我有一個很奇怪的錯誤(工程類之間):當我想用SocialServer::Client類從我SocialServer::Server類,連接器扔我兩個LNK2019錯誤:C++ LNK2019

Error 1 error LNK2019: unresolved external symbol "public: void __thiscall SocialServer::Client::Handle(void)" ([email protected]@[email protected]@QAEXXZ) referenced in function "private: static unsigned int __stdcall SocialServer::Server::listenThread(void *)" ([email protected]@[email protected]@[email protected]) C:\Users\benjamin\Documents\Visual Studio 2010\Projects\FCX Social Server\SocialServer Core\Server.obj SocialServer Core 

Error 2 error LNK2019: unresolved external symbol "public: __thiscall SocialServer::Client::Client(unsigned int)" ([email protected]@@[email protected]@Z) referenced in function "private: static unsigned int __stdcall SocialServer::Server::listenThread(void *)" ([email protected]@[email protected]@[email protected]) C:\Users\benjamin\Documents\Visual Studio 2010\Projects\FCX Social Server\SocialServer Core\Server.obj SocialServer Core 

不過,這些2人失蹤功能得到正確實施:

Client.h

#pragma once 

#include "dll.h" 

namespace SocialServer 
{ 
    class __social_class Client 
    { 
    public: 
     Client(SOCKET sock); 
     ~Client(); 

     void Handle(); 

    private: 
     static unsigned __stdcall clientThread(void* value); 

     SOCKET _socket; 
     uintptr_t _thread; 
     unsigned int _thread_id; 
    }; 
} 

Client.cpp

#pragma once 

#include "Client.h" 

namespace SocialServer 
{ 
Client::Client(SOCKET socket) 
{ 
    this->_socket = socket; 
} 

Client::~Client() 
{ 
} 

void Client::Handle() 
{ 
    std::cout << " New client " << std::endl; 
    this->_thread = _beginthreadex(NULL, 0, Client::clientThread, &this->_socket, CREATE_SUSPENDED, &this->_thread_id); 
    ResumeThread((HANDLE)this->_thread); 
} 

unsigned __stdcall Client::clientThread(void* value) 
{ 
    // Some code to execute here ... 
} 
} 

問題從何而來?

+0

什麼是__social_class? – 2010-09-19 15:30:01

+0

#define __social_class __declspec(dllexport) – Sywesk 2010-09-19 15:42:23

回答

0

我找到了解決方案。 在由_beginthreadex()(帶有無符號__stdcall)使用的函數中,總是在最後添加一個返回值。