精品理论电影在线_日韩视频一区二区_一本色道精品久久一区二区三区_香蕉综合视频

C基礎:C語言程序調用C++庫函數方法

發布時間:2011-08-29 共1頁

  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
  $

百分百考試網 考試寶典

立即免費試用