全部
文章
模考
课程
查分
报名
论坛
您现在的位置:考试大 >> 计算机二级 >> C语言 >> C语言基础 >> 文章内容

C基础:C语言程序调用C++库函数方法

来源:考试大   【考试大:中国教育考试第一门户】   2009年2月14日
  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  评论 纠错

 

考试大网校:等级考试网络课程免费试听
课程名称 讲师 优惠价 试听 报 名
 2011全国计算机等级二级公共基础 刘德强 ¥50
试听
 2011全国计算机等级考试二级VF 刘德强 ¥100
试听
 2011全国计算机等级考试二级VB 李琳玲 ¥100
试听
 2011全国计算机等级考试二级C语言 陈翠娥 ¥100
试听
 2011全国计算机等级考试三级网络技术 邱春荣 ¥100
试听
网友跟贴

暂无跟贴,欢迎您发表意见

 
 
跟贴共0
笔 名 :
网友评论仅供其表达个人看法,并不表明考试大同意其观点或证实其描述
网校免费试听