当前位置:首页 > 网络编程 > 软件语言 > C语言 > C语言程序调用C++库函数方法

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

点击次数:25 次 发布日期:2008-12-01 11:57:53 作者:源代码网
源代码网推荐

    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   [Page]
  这时候生成第二个.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  
  $

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华