Hello!~
  
       Now i encounter a function call problem in PostgreSQL's psql module!
       
       The situation is as follow:
        In ./src/bin/psql/common.c, I want to call the function 
pqCatenateResultError().
        Function pqCatenateResultError() is declared in 
./src/interfaces/libpq/libpq-init.h    
                                    extern void pqCatenateResultError(PGresult 
*res, const char *msg); 
        and is defined in ./src/interfaces/libpq/fe-exec.c
                               void
                               pqCatenateResultError(PGresult *res, const char 
*msg)
                              {
                                  PQExpBufferData errorBuf;
                                  if (!res || !msg)
                                             return;
                                  initPQExpBuffer(&errorBuf);
                                  if (res->errMsg)
                                  appendPQExpBufferStr(&errorBuf, res->errMsg);
                                  appendPQExpBufferStr(&errorBuf, msg);
                                  pqSetResultError(res, errorBuf.data);
                                  termPQExpBuffer(&errorBuf);
                              }


      To call this function in ./common.c, I include 'libpq-init.h' in 
./src/bin/psql/common.h .
      As ./common.c include the header file 'common.h'.


     But when I use pqCatenateResultError() in ./common.c, It appears 
"undefined reference to pqCatenateResultError()" first.
     
     So I include 'extern void pqCatenateResultError(PGresult *res, const char 
*msg);' at the begining of './common.c' .
     But this change make no difference to the result.
   
      I do not know why this happened! Someone hlep me!  Thank you.


      There is another situation similar to the situation above:
      Function PQexec() is declared in ./src/interfaces/libpq/libpq-fe.h and 
defined in ./src/interfaces/libpq/fe-exec.c
                             extern PGresult *PQexec(PGconn *conn, const char 
*query);
      I can call this function with no error happening!


      These two situation puzzled me!~


                                                                            
From:   Stone

Reply via email to