当前位置:  技术问答>linux和unix

求救!undefined reference

    来源: 互联网  发布时间:2015-11-29

    本文导语:  我自己写了一个类,声明放在taskmgr.h, 定义在taskmgr.cc, 然后在main里面用这个类,但是编译的时候出现了很多undefined reference,都是说我的类没有定义,但是我在写main函数那个文件里已经include "taskmgr.h",请问怎么做...

我自己写了一个类,声明放在taskmgr.h, 定义在taskmgr.cc, 然后在main里面用这个类,但是编译的时候出现了很多undefined reference,都是说我的类没有定义,但是我在写main函数那个文件里已经include "taskmgr.h",请问怎么做才能正确编译呢? 

错误具体如下

zzhou@oscar:~/src/IM$ g++ talkserver.cc -I/src/IM  -o talkserver
/tmp/ccsniD51.o: In function `thread(void*)':talkserver.cc:(.text+0x6c): undefined reference to `taskMgr::islistening'
:talkserver.cc:(.text+0x3ad): undefined reference to `taskMgr::SendMsg(int, std::basic_string)'
/tmp/ccsniD51.o: In function `main':talkserver.cc:(.text+0x4c6): undefined reference to `taskMgr::SetPortNum(int)'
:talkserver.cc:(.text+0x4ce): undefined reference to `taskMgr::Establish()'
:talkserver.cc:(.text+0x501): undefined reference to `taskMgr::islistening'
:talkserver.cc:(.text+0x541): undefined reference to `taskMgr::relationMap'
:talkserver.cc:(.text+0x5d3): undefined reference to `taskMgr::relationMap'
:talkserver.cc:(.text+0x69e): undefined reference to `taskMgr::Connect(int, sockaddr_in*)'
:talkserver.cc:(.text+0x6bc): undefined reference to `taskMgr::relationMap'
:talkserver.cc:(.text+0x72d): undefined reference to `taskMgr::ReceiveMsg(int)'
:talkserver.cc:(.text+0x7ee): undefined reference to `taskMgr::relationMap'


这是类的声明
class taskMgr
{
  public:
     static int Establish();
     static int GetPortNum();
     static void SetPortNum(int port);
     static int GetAllConn();
     static void HandleDisconnWhenSend(int id);
     static map relationMap; //relations between sockets and taskMgr objects ids
     static map taskMap;         //ids and pointers that pointed to taskMgr
     static bool islistening;               //if islistening is false then the server quit
     
  private: 
     static int coutAllConn;                  //all connections on the server
     static int portNum;                      //listening port number
     
     //maintains the count of taskMgr objects that ever exist,not current actually
     static int idTaskMgr;                    
     static int backlog;       
     
     
  public:
   enum{TASK_IDLE, TASK_DIE, TASK_BLOCK};     //this used by m_status;
     map m_userList;  //
     char m_recvBuff[MAXTRANSFERSIZE];
     string m_sendStr;

  private:
     int m_status;
     int m_conn;                                //connections that related to this taskMgr                      
     int m_lastsocket;                          //represent the socket that is working with client
     int m_id;                                  //identifier of taskMgr object
     
     
  public:
     taskMgr();
     ~taskMgr();
     bool operator==(const taskMgr mgr)const{return (m_id == mgr.m_id);}
     int Connect(int socket, struct sockaddr_in* their_addr);
     int ReceiveMsg(int socket);
     int SendMsg(int socket, string msg);
     void Disconnect(int socket);
     int GetStatus();
     void SetStatus(int status);
     int GetConnections();    
      int GetLastSocket();
     
};





|
还有 static void HandleDisconnWhenSend(int id);
要改为如下:
void taskMgr::HandleDisconnWhenSend(int id)

另外:
static必须初始化。否则就会保错。

|
初始化代码:
bool taskMgr::islistening = true;
int taskMgr::backlog = 3;
int taskMgr::coutAllConn=0;  
int taskMgr::portNum=0;  
int taskMgr::idTaskMgr=0;  
map taskMgr::relationMap; 
map taskMgr::taskMap; 

|
那你的程序编译试了一下,注意原因你的代码中:
使用static 静态变量时,在你的.cpp中,要用如下格式:
taskMgr::静态变量

    
 
 

您可能感兴趣的文章:

  • 求救 为何出现 symbol `DA_C' undefined
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求救!求救!紧急求救!为什么更新不了所指定的内容?
  • 求救!!!硬件高请进、、、、、、(十万火急,高分求救。)
  • 求救求救!!
  • 求救啊 高分求救 UNIX下关于进程通讯的问题~
  • 求救!!!求救!!!机器不能正常启动
  • 关于jdbc,求救求救!在线等待,马上给分
  • 紧急求救,root用户无权限删除文件
  • 网络技术 iis7站长之家
  • 高分求救~~如何取得linux下进程完整命令行字符串,就是的ps -ef 完整的全路径的CMD那一列,求救!!!!附现在的代码
  • 求救!weblogic6.0后台运行正确,前台页面跳转或调用其他页面时出“页面无法显示错误”
  • 求救:java里如何取整一个浮点数(不做四舍五入)
  • 紧急求救!!
  • Linux下无法启动apache 高分求救!在线等待
  • 紧急求救 我用freebsd通过smbfs连接win2000的一些问题 (分不够可加)
  • 紧急求救 我用freebsd通过smbfs连接win2000的一些问题
  • 求救,linux和windows之间如何联成局域网(设置),并且相互之间移动文件。
  • 求救!!在Redhat7.3下安装scim0.9.3怎么安装?
  • Linux8.0 修改字符集后,再次进系统,无图形界面问题。。。求救。。
  • SUSE网络打印机问题,在线等,求救!!
  • 散分一百,紧急求救!ROOT密码忘记


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3