专栏首页python3python调用C库

python调用C库

  • 编写C库test.c #include <stdio.h> #include <string.h> int strcmpTest(char *a, char *b) { return strcmp(a, b); } void strcpyTest(char *dst, char *src) { memcpy(dst, src, strlen(dst)); } char *readStr(char *str) { printf("LibPrint: %s addr=%p\n", str, str); return str; }

   将c文件生成动态库:gcc test.c -fPIC -shared -o libtest.so

  • 编写python文件调用该库
import ctypes
test = ctypes.CDLL("./libtest.so")
s1 = '0123456789'
s2 = '0123456789'
s3 = '987654321'
print 'strcmp case:'
print test.strcmpTest(s1, s2)
print 'strcpy case:'
test.strcpyTest(s1, s3)
print  s1
print 'readStr case:'
print  test.readStr(s3)

   执行结果如下:

strcmp case:
0
strcpy case:
987654321
readStr case:
LibPrint: 987654321  addr=0x7fb00c1e0fb4
203296692

我用计算器算了一下,203296692 == 0xc1e0fb4(32bits)。我实验的机器是64bits,所以看起来addr要大。并且readStr的返回值到python脚本中,是以32bits有符号存储的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python实现hive自动化测试

    本程序主要实现hive权限测试。系统中有管理员用户single和测试用户test。在路径/home/test/下,将用例和预期结果写在xml文件中。

    py3study
  • python的四大函数讲解

          def 函数名(参数1,参数2...):         函数体

    py3study
  • Python练手例子(8)

    程序分析:创建一个新的 3 行 3 列的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。

    py3study
  • 【Rust日报】2019-10-02 InfoQ 趋势报告- Rust 从创新阶段转变为早期采用阶段

    Rust 已经从创新阶段转变为早期采用阶段,这主要是由于它在基础设施和网络数据平面空间(例如,Habitat和Linkerd 2.0)中的应用。Rust 语言也...

    MikeLoveRust
  • 【答疑解惑】java中switch语句陷阱

    语音版: 今天群中小伙伴们遇到了一个switch问题我给大家讲解一下,算是Java中的小陷阱吧。 Java中的switch语句穿透: 今天一同学写了类似下面的代...

    程序员互动联盟
  • Scala基础——模式匹配

    当需要从多个分支进行选择的场景,类似Java中的switch语句,不需要使用break停止代码执行。

    羊羽shine
  • HTML 转原生 HTN 项目开发记录

    本文主要是记录 HTN 项目开发的过程。关于这个项目先前在 Swift 开发者大会上我曾经演示过,不过当时项目结构不完善,不易扩展,也没有按照标准来。所以这段时...

    用户7451029
  • PerfDog WEB端使用手册

    首先,先登录官网(https://perfdog.qq.com/),点击注册按钮:

    WeTest质量开放平台团队
  • linux下MySQL表名忽略大小写设置

    最近公司项目的MySQL数据库要迁移到linux下,部署时日志总是显示报找不到一个表,用MYSQL查看明明有这个表。后来经百度,原来LINUX下的MYSQL默认...

    流柯
  • [Scala随用随学] —— sealed声明的作用

    今天在看MLlib的源码时,看到Vector的声明是sealed trait,很好奇这个sealed有什么作用,与是搜到了这个文章:http://www.cnb...

    用户1154259

扫码关注云+社区

领取腾讯云代金券