免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10709 | 回复: 2
打印 上一主题 下一主题

[故障求助] AIX xlC 动态链接库+静态库的问题 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2005-06-16 14:52 |显示全部楼层

AIX xlC 动态链接库+静态库的问题

c.c文件

#include <stdio.h>;

int
afunc()
{
#if( defined __hp__ || defined HPUX )
       return 100;
#else
       return 101;
#endif
}


b.c
#include <stdio.h>;
#include <dlfcn.h>;

extern int      afunc();

int
bfunc()
{
       fprintf( stdout, "in bfunc\n" );
       fprintf( stdout, "afunc=%d\n", afunc() );
       return 0;
}


a.c
#include <stdlib.h>;
#include <stdio.h>;
#include <dlfcn.h>;

typedef int (*func_portal)();  /*func_portal的定义同SO中的函数类型有关*/

main()
{
       void  *dlhandle;
       void  *pfunc;
       func_portal MainFunc;
       int rc;
       dlhandle = dlopen( "./libb.so", RTLD_LAZY );
       if( dlhandle == NULL ) {
               fprintf( stderr, "dlopen error(%s)\n", dlerror() );
               exit( -1 );
       }
       fprintf( stdout, "dlhandle succ\n" );
       pfunc = dlsym( dlhandle, "bfunc" );
       if( pfunc == NULL ) {
               fprintf( stderr, "dlsym error(%s)\n", dlerror() );
               exit( -1 );
       }
       }
      MainFunc=(func_portal)pfunc;
      rc=MainFunc();
      printf("%d\n",rc);
      dlclose( dlhandle );
       exit( 0 );
}
      
      
编译过程

第一步:生成"点O文件"  
   命令:  cc -c b.c c.c
第二步:生成"点SO文件"  
   命令: ld -G -lc -bnoentry -bexpall b.o c.o -o libb.so
第三步: 生成调用SO的文件
   命令: cc a.c -o a.out
   
运行环境:AIX4.3.3+c for aix

论坛徽章:
0
2 [报告]
发表于 2005-06-16 15:02 |显示全部楼层

AIX xlC 动态链接库+静态库的问题

c.c文件

#include <stdio.h>;

int
afunc()
{
#if( defined __hp__ || defined HPUX )
       return 100;
#else
       return 101;
#endif
}


b.c
#include <stdio.h>;
#include <dlfcn.h>;

extern int      afunc();

int
bfunc()
{
       fprintf( stdout, "in bfunc\n" );
       fprintf( stdout, "afunc=%d\n", afunc() );
       return 0;
}


a.c
#include <stdlib.h>;
#include <stdio.h>;
#include <dlfcn.h>;

typedef int (*func_portal)();  /*func_portal的定义同SO中的函数类型有关*/

main()
{
       void  *dlhandle;
       void  *pfunc;
       func_portal MainFunc;
       int rc;
       dlhandle = dlopen( "./libb.so", RTLD_LAZY );
       if( dlhandle == NULL ) {
               fprintf( stderr, "dlopen error(%s)\n", dlerror() );
               exit( -1 );
       }
       fprintf( stdout, "dlhandle succ\n" );
       pfunc = dlsym( dlhandle, "bfunc" );
       if( pfunc == NULL ) {
               fprintf( stderr, "dlsym error(%s)\n", dlerror() );
               exit( -1 );
       }
       }
      MainFunc=(func_portal)pfunc;
      rc=MainFunc();
      printf("%d\n",rc);
      dlclose( dlhandle );
       exit( 0 );
}
      
      
编译过程

第一步:生成"点O文件"  
   命令:  cc -c b.c c.c
第二步:生成"点SO文件"  
   命令: ld -G -lc -bnoentry -bexpall b.o c.o -o libb.so
第三步: 生成调用SO的文件
   命令: cc a.c -o a.out
   
运行环境:AIX4.3.3+c for aix

论坛徽章:
0
3 [报告]
发表于 2005-06-16 15:08 |显示全部楼层

AIX xlC 动态链接库+静态库的问题

特别说明,最前面兄弟,你A.C程序中有错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP