今天在做东西的时候遇到一个问题,就是如何在C语言中调用C++做的动态链接库so文件
如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明, 那么你如何用c调用呢,别着急,本文通过一个小小的例子,让你能够很爽的搞定.   
链接库头文件:
head.h

class A
{  public:  A();  virtual ~A();  int gt();  int pt();
private:  int s;
};
// 何问起 hovertree.com

firstso.cpp

#include <iostream>
#include "head.h"  A::A(){}
A::~A(){}
int A::gt()
{  s=10;
}
int A::pt()
{  std::cout<<s<<std::endl;
}
// 何问起 hovertree.com

编译命令如下:
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;
}
}
// 何问起 hovertree.com

编译命令:
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;
}
// 何问起 hovertree.com

编译命令如下:
gcc -rdynamic -s -o myapp test.c

运行Z$./myapp

10
$

http://www.cnblogs.com/roucheng/p/3456005.html

转载于:https://www.cnblogs.com/roucheng/p/cdll.html

如何用c语言调用c++做成的动态链接库相关推荐

  1. 如何用java语言调用tensorflow训练好的模型

    1.TensorFlow的训练模型在Android和Java的应用及调用 2.tensorflow的python离线训练java在线预测方案 3.tensorflow训练的模型在java中的使用 4. ...

  2. linux下如何用c语言调用shell命令-转

    C程序调用shell脚本共有三种法子 :system().popen().exec系列函数 system()不用你自己去产生进程,它已经封装了,直接加入自己的命令exec 需要你自己 fork 进程, ...

  3. c 语言关机指令,如何用C语言调用关机指令?

    #include "stdio.h" #include #include void main() { char cmd[255]={0}; char str[10]; int i; ...

  4. 如何用C#语言构造蜘蛛程序

    "蜘蛛"(Spider)是Internet上一种很有用的程序,搜索引擎利用蜘蛛程序将Web页面收集到数据库,企业利用蜘蛛程序监视竞争对手的网站并跟踪变动,个人用户用蜘蛛程序下载We ...

  5. 转:如何用C#语言构造蜘蛛程序

    如何用C#语言构造蜘蛛程序 "蜘蛛"(Spider)是Internet上一种很有用的程序,搜索引擎利用蜘蛛程序将Web页面收集到数据库,企业利用蜘蛛程序监视竞争对手的网站并跟踪变动 ...

  6. Linux C语言调用C++动态链接库

    Linux C语言调用C++动态链接库 标签: C调用C++库 2014-03-10 22:56 3744人阅读 评论(0) 收藏 举报 分类: [Linux应用开发](48) 版权声明:本文为博主原 ...

  7. [转载]如何用C#语言构造蜘蛛程序

    [转载]如何用C#语言构造蜘蛛程序 出处:未知了.. "蜘蛛"(Spider)是Internet上一种很有用的程序,搜索引擎利用蜘蛛程序将Web页面收集到数据库,企业利用蜘蛛程序监 ...

  8. 如何下载c语言游戏,如何用C语言编写游戏.doc

    <如何用C语言编写游戏.doc>由会员分享,可在线阅读,更多相关<如何用C语言编写游戏.doc(71页珍藏版)>请在皮匠网上搜索. 1.如何用C语言编写游戏网络游戏是常谈的话题 ...

  9. 如何用C语言写一个web服务器的基础功能

    我们都知道,学一门语言,只是单独看了就不写的话是很容易出现眼高手低的,所以,今天摩杜云要给大家分享的内容,就是如何用C语言写一个web服务器的基础功能,希望大家看完有所收获. 服务器架构 目标架构 以 ...

最新文章

  1. 全球支付平台paypal社招一面,二面合并面经
  2. 详解基于朴素贝叶斯的情感分析及 Python 实现
  3. PHP7 学习笔记(六)403 Forbidden - WAMP Server 2.5
  4. curl get请求_Linux curl 常用示例你都 Get 了吗?| CSDN 博文精选
  5. 一个网站自动化测试程序的设计与实现
  6. html php获取post数据格式,html - php文件无法得到POST过来的数据
  7. java向Excel文件写入数据
  8. 32 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义差异码
  9. 解决HuggingFace加载预训练模型时报错TypeError: expected str, bytes or os.PathLike object, not NoneType
  10. UVA665 LA5658 False coin【暴力】
  11. const的理解、const指针、指向const的指针
  12. 5.数据中台 --- 数据汇聚联通:打破企业数据孤岛
  13. pytorch加载模型报错RuntimeError: Error(s) in loading state_dict for ResNet:Missing key(s) in stat
  14. VB程序使用管理员权限
  15. cad卸载工具_Adobe软件卸载与常见问题解决方案
  16. 导师对计算机学生论文的评语,导师对论文的学术评语
  17. 多渠道打包,生成不同包名的包
  18. 国开《Android智能手机编程》终结性考核
  19. C语言简介及进制换算
  20. 小功能⭐️U3D异步加载功能

热门文章

  1. Java基础:什么是返回对象
  2. MicroPython实例之TPYBoard v102炫彩跑马灯WS2812B
  3. CentOS 中卸载 RPM 包文件
  4. 使用struts做一个简单的登录跳转
  5. elixir 高可用系列 - 目录
  6. VC++ SetLayeredWindowAttributes 部分窗口透明鼠标穿透
  7. 【HTML5CSS3进阶学习01】气泡组件的实现
  8. [WCF编程]8.服务实例的生命周期
  9. ios 类别(category)
  10. ubuntu11.04 --- 没有了上边的导航 和左边的导航 怎么办?