C语言

如何在C语言中调用C++做的动态链接库

时间:2024-12-06 02:17:54 C语言 我要投稿
  • 相关推荐

如何在C语言中调用C++做的动态链接库

  如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明,那么你如何用c调用呢?下面百分网小编带大家一起来看看详细内容,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!

  链接库头文件:

  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文件,将其拷贝到系统库里面:/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++做的动态链接库】相关文章:

怎么在C语言中调用C++做的动态链接库07-15

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

如何在c语言中调用Linux脚本07-09

C/C++函数调用的方式07-29

C++调用C函数的方法05-21

C++如何调用matlab函数06-29

C与C++之间相互调用的实例07-07

C/C++函数调用的方式有哪些06-23

C语言中Swift函数调用实例01-17