使用 ctypes 从 python 调用 C 函数

2024-04-13

我有以下 C 代码。我正在尝试使用Python从Python调用这个函数ctypes:

int add ( int arr []) 
{
    printf("number %d \n",arr[0]);
    arr[0]=1;
    return arr[0];
}

我用以下方法编译了这个:

gcc -fpic -c test.c 
gcc -shared -o test.so test.o

然后把它放进去/usr/local/lib.

Python对此的调用是:

from ctypes import *

lib = 'test.so'
dll = cdll.LoadLibrary(lib)
IntArray5 = c_int * 5
ia = IntArray5(5, 1, 7, 33, 99)
res = dll.add(ia)
print res

但我总是得到一些大数字,比如-1365200.

我也尝试过:

dll.add.argtypes=POINTER(c_type_int)

但它不起作用。


相反,请尝试:

dll = cdll.LoadLibrary('test.so')
res = dll.add(pointer(c_int(5)))
print res
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ctypes 从 python 调用 C 函数 的相关文章

随机推荐

  • 即使导出路径也找不到 conda 命令

    我将 anaconda3 安装到我的主目录中 这是我在终端中看到的 我的 bash profile 看起来像这样 导出 PATH Users spotter anaconda3 bin PATH 所以我不明白为什么 conda 不被识别 当
  • 从单个表中选择同一列两次但条件不同

    我想显示员工的姓名和号码以及老板的号码和姓名 如下所示 只有一张表 到目前为止我尝试过 SELECT ID Name Boss SELECT Name FROM Employees WHERE ID IN SELECT Boss FROM
  • 使用 pip 安装后找不到 cookiecutter 命令

    我想使用 cookiecutter 启动 django 项目 但由于某种原因找不到 cookiecutter 我所做的是 pip install cookiecutter 在那之后 cookiecutter https github com
  • C++ 支持编译时计数器吗?

    出于自省的目的 有时我想自动将序列号分配给类型或类似的东西 不幸的是 模板元编程本质上是一种函数式语言 因此缺乏实现此类计数器的全局变量或可修改状态 或者确实如此 根据请求的示例代码 include
  • 进度条的可见性

    当用户在一项活动中单击按钮时 我需要处理一些数据 因此屏幕看起来应用程序停止了 2 3 秒 这不是很多 但我想向用户提供一切正常的信息 IMO 最好的方法是进度条 仅在处理数据时才可见 我找到了ProgressBar的代码 它看起来像这样
  • 如何更改类内的变量?在Python中

    我已经开始编写一个空闲游戏的代码 但稍后我会添加某种类型的输入 我的问题是我的class库存不增加int s from def砍 我的到我的variable SP wood SP stone 它只是替换variable与它得到的号码def砍
  • 从 F# 调用 C# 异步方法会导致死锁

    我有一组 F 脚本 它们调用我们创建的各种库 其中许多库公开了最初用 C 编写的异步方法 最近我发现脚本停止工作了 我想距离我上次使用它们已经有半年了 当时它们还可以工作 我试图隔离问题并提出了以下代码来重现它 首先 我们考虑一个包含以下
  • 如何在 Pandas 数据框的多列上运行 Ta-Lib?

    我有一个数据框 其中包含多种证券的价格作为列 但我找不到一次性运行 TA Lib 的解决方案 因为它需要 numpy ndarray 如何在多种证券上运行 TA Lib 并获得数据帧作为回报 import talib as ta d sec
  • 缓存 VS 会话 VS cookie?

    缓存 会话 Cookie 的注意事项是什么 例如 我经常使用会话变量 有时当用户开始订购产品然后去吃午餐并在几个小时后回来并继续预订时 预订应用程序中有时会出现问题 我将预订存储在会话中 直到用户确认或中止预订 因此当用户只需单击浏览器中的
  • 使用单选按钮 PHP SQL 过滤搜索

    我有一个有效的搜索列表 搜索的工作原理是查找搜索词是否如姓名 家庭和工作 现在我想把这个搜索分开 我的意思是 创建三个单选按钮 单击第一个按钮按姓名搜索 单击第二个按钮按家庭搜索 单击第三个按钮按工作搜索 所以我的基本代码在这里 这里需要添
  • 使用 JSON.NET 作为 ASP.NET MVC 3 中的默认 JSON 序列化器 - 可能吗?

    是否可以使用JSON NET http json codeplex com 作为 ASP NET MVC 3 中的默认 JSON 序列化器 根据我的研究 似乎实现这一目标的唯一方法是扩展操作结果 http james newtonking
  • 如何更改 Laravel 中的日期语言?

    我想将我看到的日期的语言从英语更改为法语 strftime d B Y H M strtotime article gt created at 我们可以使用另一种方法与translatedFormat Carbon setLocale fr
  • Selenium WebDriver 拖放到滚动条

    我对 Selenium WebDriver 拖放有疑问 它不想拖放到滚动条中的 webelement 我试过这个 new Actions SeleniumDriver getDriver dragAndDrop element target
  • DB2 SQLCODE=-805,SQLSTATE=51002,SQLERRMC=NULLID.SYSLH203 0X5359534C564C3031

    我收到以下错误 com ibm db2 jcc am SqlException DB2 SQL Error SQLCODE 805 SQLSTATE 51002 SQLERRMC NULLID SYSLH203 0X5359534C564C
  • Angular 4打字稿解析响应对象中的枚举接口属性

    我收到来自 API 的响应 它返回一个枚举值 从 API 返回的值在请求中表示为字符串 这个值是一个enumTypescript 接口的属性 Problem 当收到响应时 TS接口将该值存储为字符串 可能这就是问题 所以我不能直接使用它en
  • 在 Hibernate 中禁用延迟加载

    如何在 Hibernate 中禁用延迟加载 我使用的是持久性注释 而不是 hbm xml 文件 我正在按 ID 获取单个对象 并希望加载所有属性 在我使用该对象之前会话已关闭 Thanks 您需要使用 FetchType EAGER 注释您
  • java中将十进制转换为格雷码

    最近出现一个问题是 编写算法将十进制数转换为n位格雷码 例如 使用 1 位 最简单 0 gt 0 1 gt 1 使用 2 位 0 gt 00 1 gt 01 2 gt 11 3 gt 10 使用 3 位 0 gt 000 1 gt 001
  • 如何使用 if/else 语句更改全局变量

    我有这个代码我想改变var n如果var thisRoll is not green 但我只得到undefined在输出中console log n var thisRoll red var n var base bet 1 functio
  • 带 margin-left 和 width:100% 右侧溢出的 Div

    我有 2 个嵌套的 div 宽度应为 100 不幸的是 带有文本框的内部 div 溢出 并且实际上比外部 div 更大 它有一个左边距 并且溢出了大约该边距的大小 我该如何解决这个问题 div style width 100 div sty
  • 使用 ctypes 从 python 调用 C 函数

    我有以下 C 代码 我正在尝试使用Python从Python调用这个函数ctypes int add int arr printf number d n arr 0 arr 0 1 return arr 0 我用以下方法编译了这个 gcc