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

#include \"head.h\"

A::A(){}

A::~A(){}

int A::gt()

{

s=10;

}

int A::pt()

{

std::cout<

}

编译命令如下:

g -shared -o libmy.so firstso.cpp

这时候生成libmy.so文件,将其拷贝到系统库里面:/usr/lib/

进行二次封装:

.cpp

//secso.cpp

#include

#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 [Page]

这时候生成第二个.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库函数方法相关推荐

  1. 易语言 标准c 动态库,易语言Dll动态库的开发

    一.关于易语言DLL 易语言Dll动态库的开发是编程当中和其他语言开发进行交互必不可少的方法之一,从易语言3.6版开始,已经能够支持对DLL动态链接库的开发, 编译出的DLL是标准的DLL,和其他编程 ...

  2. c语言程序设计编程题库,C语言程序设计习题库.doc

    C语言程序设计习题库 选择练习题 1.C语言中最简单的数据类型包括( B ). A.整型,实型,逻辑型B.整型,实型,字符型 C.整型,字符型,逻辑型D.整型,实型,逻辑型,字符型 2.C语言中,运算 ...

  3. c语言图片处理函数库,C语言图形开发库函数graphics.doc

    C语言图形开发库函数graphics 函数名: fillellipse功? 能: 画出并填充一椭圆用? 法: void far fillellipse int x, int y, int xradiu ...

  4. c语言程序设计a题库,c语言程序设计试题(A).doc

    c语言程序设计试题(A).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

  5. c语言 sizeof在哪个库,c语言的sizeof到底应该返回什么?

    我发现这个面试问题难住了蛮多人的.总的来说,sizeof(x)返回的是该值x占用的存储空间的大小.但是,问题就出在这个"x"到底是啥? #include #include #def ...

  6. python调用c++动态库_Python应用:调用C/C++动态链接库的方法详解

    Linux系统下调用动态库(.so) 1.linuxany.c代码如下: #include "stdio.h" void display(char* msg){ printf(&q ...

  7. Visual Studio封装静态链接库至新静态库,供程序调用

    熟悉Windows开发的人都肯定了解静态链接库和动态链接库. 最近遇到一个问题: A静态库是使用VS编译,因为C++版本的问题,并不能直接在Qt中被调用,因为会报头文件某处错误. 因为A库很大,同时又 ...

  8. android 调用go静态库,CGO,GOLANG调用C库,调用代码、静态库或动态库

    CGO CGO可以让golang和c互相调用,譬如x264或者aac编解码,用go再实现一遍比较麻烦,直接调用c的函数会更合适. CGO可以直接用C的代码,或者C的静态库,或者动态库,当然C++也是可 ...

  9. c调用python第三方库_c/c++调用python程序且含tensorflow第三方库

    对于纯python程序而言,用c程序来调用是比较适合的,如果python程序中包含了其他第三方库,则调用极可能出错,且不易查明原因.如笔者曾用c程序调用包含tensorflow的python程序,有的 ...

最新文章

  1. 基本控件HyperlinkButton控件
  2. C#设计模式之装饰者
  3. android ndk 界面开发教程,Android NDK开发之入门教程
  4. RDIFramework.NET ━ 9.4 角色管理 ━ Web部分
  5. 78oa mysql_78oa系统版本升级方法
  6. SELECT的学习以及在socket中的应用
  7. Python发送POST request payload形式的请求
  8. jQuery - animate(滑块滑动)
  9. cipher命令(转)
  10. c语言头文件相互包含的后果,C语言头文件相互包含的问题
  11. 【思科、华为、华三这三大认证,选哪个考最好?】
  12. excepted one 0f #, =>at line16,column 16(byte 311)
  13. 某去哪网,JS逆向:★★★★
  14. windows配置本地hosts
  15. 【第十六篇】Flowable事件之结束事件
  16. android手机电池寿命,真正有效延长手机电池寿命的几点建议(iPhone+安卓)
  17. 关于Windows的window
  18. Spring Security系列教程-Spring Security核心API讲解
  19. 手动生成MyEclipse注册码及序列号(源代码)
  20. 嵌入式软件工程师相关的应聘要求

热门文章

  1. 深度解析FUTABA的SBUS协议(/天地飞遥控器的WBUS协议/Robomaster接收机的DBUS协议)到底是啥?
  2. 迅雷百度网盘不能下载资源 办法总比困难多
  3. 获取 JSON 数据得个数 length
  4. java 累加器_Spark基础教程——累加器的使用(JAVA)
  5. 中医学专业学c语言吗,考研专业课中医学题型分析
  6. mygui初探(二)皮肤编辑器
  7. 确定sw1开关信号输入端口_三菱PLC入门 | FX2N系列PLC的信号输入端子接线(图文详解)...
  8. 需要细读的好文章(搜集)
  9. 亚洲众包网站悄然崛起:中国成最大“雇主”
  10. 朋友圈如何秀一把!用Python一键生成炫酷九宫格图片!