将问题与libircclient中的函数相关联

时间:2012-07-13 19:40:08

标签: c ubuntu

问题无论是链接还是包含....已找到库libircclient.h,但库中使用的函数不是....

#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>

/*#include "./libircclient-1.6/include/libircclient.h"*/ 
#include "libircclient.h"

typedef struct
{
    char    * channel;
    char    * nick;

} irc_ctx_t;


void addlog (const char * fmt, ...)
{
    FILE * fp;   // File-Zeiger
    char buf[1024];
    va_list va_alist; 

    va_start (va_alist, fmt); 
#if defined (WIN32)
    _vsnprintf (buf, sizeof(buf), fmt, va_alist);  
#else                                                         
    vsnprintf (buf, sizeof(buf), fmt, va_alist); 
#endif
    va_end (va_alist); 

    printf ("%s\n", buf);

    if ( (fp = fopen ("irctest.log", "ab")) != 0 ) // High level, daher File-Zeiger
    {
        fprintf (fp, "%s\n", buf);
        fclose (fp);
    }
}


void dump_event (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
    char buf[512];
    int cnt;

    buf[0] = '\0';

    for ( cnt = 0; cnt < count; cnt++ )
    {
        if ( cnt )
            strcat (buf, "|");

        strcat (buf, params[cnt]);
    }


    addlog ("Event \"%s\", origin: \"%s\", params: %d [%s]", event, origin ? origin : "NULL", cnt, buf);
}


void event_join (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
    dump_event (session, event, origin, params, count);
    irc_cmd_user_mode (session, "+i");
    irc_cmd_msg (session, params[0], "Hi all");
}


void event_connect (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
    irc_ctx_t * ctx = (irc_ctx_t *) irc_get_ctx (session);
    dump_event (session, event, origin, params, count);

    irc_cmd_join (session, ctx->channel, 0);
}


void event_privmsg (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
    dump_event (session, event, origin, params, count);

    printf ("'%s' said me (%s): %s\n", 
        origin ? origin : "someone",
        params[0], params[1] );
}

....

gcc irctest.c

  

/tmp/ccbleNaD.o:在函数`event_join'中:irctest.c :(。text + 0x2b9):

     

对`irc_cmd_user_mode'irctest.c :(。text + 0x2d4)的未定义引用:

     

对`irc_cmd_msg'/tmp/ccbleNaD.o的未定义引用:在函数中

     

`event_connect':irctest.c :(。text + 0x2fe):未定义引用

     

`irc_get_ctx'irctest.c :(。text + 0x33b):未定义引用

     

irc_cmd_join' /tmp/ccbleNaD.o: In function dcc_recv_callback':

     

irctest.c :(。text + 0x43c):对`irc_dcc_msg'的未定义引用

     

irctest.c :(。text + 0x49b):对`irc_dcc_msg'的未定义引用

     

irctest.c :(。text + 0x4a7):对`irc_strerror'的未定义引用....

     

collect2:ld gab 1 als Ende-Statuszurück

1 个答案:

答案 0 :(得分:0)

编译时,您必须链接到库。它正在查找函数声明,但无法链接到包含定义的目标文件。

我认为它会是这样的: gcc -lircclient irctest.c