• 首页
  • 在线考场
  • 在线课程
  • 付款方式
  • 论坛交流
  • 更多
    • 考试报名
    • 成绩查询
    • QQ群联盟
    • 试题库
    • 帮助中心
    • 资料下载
设计算机二级为主页 | 注册 | 登录

考试大
  • 财会类
    • 财会类
    • 会计从业
    • 初级会计
    • 会计师
    • 注册会计师
    • 银行从业
    • 经济师
    • 资产评估
    • 统计师
    • 税务师
    • 更多>>
  • 建筑类
    • 建筑类
    • 一级建造师
    • 二级建造师
    • 造价工程师
    • 咨询工程师
    • 监理工程师
    • 房地产估价
    • 结构工程师
    • 注册建筑师
    • 土地估价师
    • 更多>>
  • 职业资格
    • 职业资格
    • 证券从业
    • 期货从业
    • 司法考试
    • 教师资格
    • 秘书资格
    • 法律顾问
    • 导游资格
    • 人力资源
    • 电子商务
    • 更多>>
  • 公务员
    • 公务员
    • 行测
    • 申论
    • 面试
    • 真题大全
    • 经验交流
    • 模拟试题
    • 公开选拔
    • 招警考试
    • 更多>>
  • 外贸类
    • 外贸类
    • 报关员
    • 报检员
    • 国际商务师
    • 单证员
    • 货运代理
    • 外销员
    • 物流师
    • 更多>>
  • 医药类
    • 医药类
    • 执业护士
    • 中药师
    • 西药师
    • 临床医师
    • 临床助理
    • 中医医师
    • 口腔医师
    • 公共卫生
    • 更多>>
  • 外语类
    • 外语类
    • CET4
    • CET6
    • 职称英语
    • 托福
    • 雅思
    • BEC
    • PETS
    • 金融英语
    • 更多>>
  • 学历考试
    • 学历考试
    • 高考
    • 成考
    • 考研
    • 自考
    • 中考
    • 考博
    • 在职硕士
    • 更多>>
  • 计算机类
    • 计算机类
    • 计算机二级
    • 计算机等级
    • 软件水平
    • 微软认证
    • 思科认证
    • JAVA认证
    • Linux认证
    • 华为认证
    • 更多>>
  • 全部分类
    • 全部分类
    • 所有考试
    • 更多>>

计算机二级考试
 首页» 计算机类考试» 等级考试» 计算机二级考试
  • 考试大品牌推荐:
  • 视频课程
  • 模拟考试系统
资讯快报
  • 报考指南 | 考试报名

  • 成绩查询 | 政策大纲
考试辅导
  • 公共基础知识 | Delphi | C++ | JAVA | VFP

  • C语言 | Access | Visual Basic | 综合指导
试题辅导
  • 在线考试 | 模拟试题 | 上机试题

  • 预测试题 | 历年真题 | 实例编程
计算机等级考试网校辅导
  • 网校课程

  • 课程试听
计算机等级考试论坛
  • 热点专题 | 百科

  • 论坛交流 | 招聘
各地动态
京 津 沪 渝 冀 晋 蒙 黑 吉 辽 | 苏 浙 皖 闽 赣 鲁 豫 湘 鄂 粤 | 琼 川 滇 黔 桂 陕 甘 宁 青 藏 疆 全国
计算机等级考试网校辅导
您现在的位置:考试大 >> 计算机二级 >> C语言 >> C语言基础 >> 文章内容
 
站内搜索:
 
C基础:C语言程序调用C++库函数方法
 来源:考试大   2009/2/14    【考试大:中国教育考试第一门户】   模拟考场   视频课程   字号:T T
  C语言程序调用C++库函数方法,关键是函数名字解析问题。 其实实现起来不是很难。
  使用关键字 extern \"C\" 可以使得C++编译器生成的函数名满足C语言的要求
  例子如下:
  链接库头文件:
  //head.h
  class A
  {
  public:
  A();
  virtual ~A();
  int gt();
  int pt();
  private:
  int s;
  };
  .cpp
  //firstso.cpp
  #include <iostream>
  #include \"head.h\"
  A::A(){}
  A::~A(){}
  int A::gt()
  {
  s=10;
  }
  int A::pt()
  {
  std::cout<<s<<std::endl;
  }
  编译命令如下:
  g++ -shared -o libmy.so firstso.cpp
  这时候生成libmy.so文件,将其拷贝到系统库里面:/usr/lib/
  进行二次封装:
  .cpp
  //secso.cpp
  #include <iostream>
  #include \"head.h\"
  extern \"C\"
  {
  int f();
  int f()
  {
  A a;
  a.gt();
  a.pt();
  return 0;
  }
  }
  编译命令:
  gcc -shared -o sec.so secso.cpp -L. -lmy
  这时候生成第二个.so文件,此时库从一个类变成了一个c的接口.
  拷贝到/usr/lib
  下面开始调用:
  //test.c
  #include \"stdio.h\"
  #include \"dlfcn.h\"
  #define SOFILE \"sec.so\"
  int (*f)();
  int main()
  {
  void *dp;
  dp=dlopen(SOFILE,RTLD_LAZY);
  f=dlsym(dp,\"f\");
  f();
  return 0;
  }
  编译命令如下:
  gcc -rdynamic -s -o myapp test.c
  运行Z$./myapp
  10
  $来源:考试大-计算机二级考试

责编:zj  纠错

  • 打印
  • RSS
  • 发表评论
  • 返回首页
  • 收藏本页
上一篇:C基础:C语言中可变参数的原理和应用
下一篇文章:C基础:C语言之void指针使用方法介绍
文章搜索: 
模拟考场 网络课堂 论坛交流 考试大百科
 相关文章
·C语言基础:伪随机数
·自增大总结:i=(i++)+(++i)i=?
·int,float,double之间不得不说的故事
·老调重谈:C语言中的指针和数组
·C语言中标准输入流、标准输出流、标准错误输
·巧用C的Time函数进行时间转换
·计算机二级C语言基础:有趣的位运算
热点动态
考试报名
成绩查询
备考辅导
试题排行
在线考试
综合指导
计算机类百科
更多..
论坛热帖
更多..