【急】HP-UX gethostbyname_r编译失败!

时间:2022-10-15 08:13:04
请大家帮帮忙:

HP-UX  hpsr1 B.11.23 U ia64 :

CODE:

#include   <netdb.h>
  #include   <sys/socket.h>
  int   main()   {
          char   host[256];
          char   buf[8192];
          struct   hostent   he,   *p;
          int   err;
          gethostbyname_r(host,   &he,   buf,   sizeof(buf),   &p,   &err);
          return   0;
  }


aCC try.cpp

"try.cpp", line 8: error #2020: identifier "gethostbyname_r" is undefined
            gethostbyname_r(host,   &he,   buf,   sizeof(buf),   &p,   &err); 

在/usr/include/netdb.h中有gethostbyname_r的声明, 但是编译还是报错。。请大家分析一下是什么原因。

6 个解决方案

#1



在/usr/include/netdb.h中有没有一些预编译选项?

#2


-D_REENTRENT开关加了没有?请看一下编译手册,可能还有其他开关。

----------------------------------------------------------- 
《征服C/C++企业软件开发核心技术》 
主题词 unix/linux 多线程 网络通讯 数据库 内存排错和性能分析 
http://www.china-pub.com/209150

#3


加了-D_REENTRAN -D__ia64  -D_PTHREADS_DRAFT4 之后 , 就报下面的错 

try.cpp", line 10: error #2140: too many arguments in function call
            gethostbyname_r(host,   &he,   (struct hostent_data *)buf,   sizeof(buf),   &p,   &err);   


好像netdb.h中只有3个参数的形式声明。。。

#4


man -a gethostbyname_r 
看看到底有几个地方定义了gethostbyname_r

----------------------------------------------------------- 
《征服C/C++企业软件开发核心技术》 
主题词 unix/linux 多线程 网络通讯 数据库 内存排错和性能分析 
http://www.china-pub.com/209150

#5


ld: Mismatched ABI (not an ELF file) for -ld4r
Fatal error.

现在报这个错

#6


那就和这个函数无关了。
慢慢排错吧。

----------------------------------------------------------- 
《征服C/C++企业软件开发核心技术》 
主题词 unix/linux 多线程 网络通讯 数据库 内存排错和性能分析 
http://www.china-pub.com/209150

#1



在/usr/include/netdb.h中有没有一些预编译选项?

#2


-D_REENTRENT开关加了没有?请看一下编译手册,可能还有其他开关。

----------------------------------------------------------- 
《征服C/C++企业软件开发核心技术》 
主题词 unix/linux 多线程 网络通讯 数据库 内存排错和性能分析 
http://www.china-pub.com/209150

#3


加了-D_REENTRAN -D__ia64  -D_PTHREADS_DRAFT4 之后 , 就报下面的错 

try.cpp", line 10: error #2140: too many arguments in function call
            gethostbyname_r(host,   &he,   (struct hostent_data *)buf,   sizeof(buf),   &p,   &err);   


好像netdb.h中只有3个参数的形式声明。。。

#4


man -a gethostbyname_r 
看看到底有几个地方定义了gethostbyname_r

----------------------------------------------------------- 
《征服C/C++企业软件开发核心技术》 
主题词 unix/linux 多线程 网络通讯 数据库 内存排错和性能分析 
http://www.china-pub.com/209150

#5


ld: Mismatched ABI (not an ELF file) for -ld4r
Fatal error.

现在报这个错

#6


那就和这个函数无关了。
慢慢排错吧。

----------------------------------------------------------- 
《征服C/C++企业软件开发核心技术》 
主题词 unix/linux 多线程 网络通讯 数据库 内存排错和性能分析 
http://www.china-pub.com/209150