日本无码中文字幕片|日本精品在线观看无码视频|国产精品免费啪啪|Av无码一区二区|亚洲在线黄片免费观看|亚洲日韩中文字幕在线观看|熟女激情乱伦在线观看a黄片|成年人观看毛片网址|AV色色色色日韩性草|国产高清无码免费

如何在C語言中調用C++做的動態(tài)鏈接庫

時間:2025-10-29 13:18:17 C語言

如何在C語言中調用C++做的動態(tài)鏈接庫

  如果你有一個c++做的動態(tài)鏈接庫.so文件,而你只有一些相關類的聲明,那么你如何用c調用呢?下面百分網小編帶大家一起來看看詳細內容,希望對大家有所幫助!想了解更多相關信息請持續(xù)關注我們應屆畢業(yè)生考試網!

  鏈接庫頭文件:

  head.h

  class A

  {

  public:

  A();

  virtual ~A();

  int gt();

  int pt();

  private:

  int s;

  };

  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文件,將其拷貝到系統(tǒng)庫里面:/usr/lib/

  進行二次封裝:

  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

  $

【如何在C語言中調用C++做的動態(tài)鏈接庫】相關文章:

怎么在C語言中調用C++做的動態(tài)鏈接庫02-19

如何在C/C++中調用Java03-13

如何在c語言中調用Linux腳本11-19

C++調用C函數的方法02-28

C/C++函數調用的方式12-03

C++如何調用matlab函數12-02

C與C++之間相互調用的實例11-19

C/C++函數調用的方式有哪些01-20

在C語言中函數調用方式的區(qū)別01-07