亚洲一级免费看,特黄特色大片免费观看播放器,777毛片,久久久久国产一区二区三区四区,欧美三级一区二区,国产精品一区二区久久久久,人人澡人人草

C語(yǔ)言

如何在C語(yǔ)言中調(diào)用C++做的動(dòng)態(tài)鏈接庫(kù)

時(shí)間:2024-12-06 02:17:54 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

如何在C語(yǔ)言中調(diào)用C++做的動(dòng)態(tài)鏈接庫(kù)

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

  鏈接庫(kù)頭文件:

  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

  這時(shí)候生成libmy.so文件,將其拷貝到系統(tǒng)庫(kù)里面:/usr/lib/

  進(jìn)行二次封裝:

  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

  這時(shí)候生成第二個(gè).so文件,此時(shí)庫(kù)從一個(gè)類變成了一個(gè)c的接口.

  拷貝到/usr/lib

  下面開(kāi)始調(diào)用:

  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

  運(yùn)行Z$./myapp

  10

  $

【如何在C語(yǔ)言中調(diào)用C++做的動(dòng)態(tài)鏈接庫(kù)】相關(guān)文章:

怎么在C語(yǔ)言中調(diào)用C++做的動(dòng)態(tài)鏈接庫(kù)07-15

如何在C/C++中調(diào)用Java03-13

如何在c語(yǔ)言中調(diào)用Linux腳本07-09

C/C++函數(shù)調(diào)用的方式07-29

C++調(diào)用C函數(shù)的方法05-21

C++如何調(diào)用matlab函數(shù)06-29

C與C++之間相互調(diào)用的實(shí)例07-07

C/C++函數(shù)調(diào)用的方式有哪些06-23

C語(yǔ)言中Swift函數(shù)調(diào)用實(shí)例01-17