python调用c代码2

1、生成动态链接库

[[email protected] c]# more head.c
#include <stdio.h>
#include <stdlib.h>

typedef struct _point{
    int x;
    int y;
}Point;

Point * InitPoint(int x,int y)
{
    Point *p = (Point *)malloc(sizeof(Point));
    p->x = x;
    p->y = y;

    return p;
}

Point * Incre(Point * p)
{
    p->x = p->x + 1;
    p->y = p->y + 1;

    return p;
}
gcc -fPIC -shared -o libhead.so ./head.c

python调用

[[email protected] ice_test_m c]# more test.py
#!/usr/bin/env python2.7
#-*- coding:utf-8 -*-

from ctypes import *

class Point(Structure):
    _fields_ = [("x",c_int),("y",c_int)]

if __name__ == ‘__main__‘:
    ddl = CDLL("./libhead.so")

    ddl.InitPoint.restype = POINTER(Point)

    p = ddl.InitPoint(5,6);

    print p.contents.x
    print p.contents.y
[[email protected] ice_test_m c]# ./test.py
5
6

python调用c代码2

时间: 2024-11-05 22:06:44

python调用c代码2的相关文章

python调用c代码

Linux环境下使用python调用C的printf例子: #!/usr/bin/env python2.7 #-*- coding:utf-8 -*- from ctypes import * def test(): #libc = cdll.LoadLibrary("libc.so.6") libc = CDLL("libc.so.6") msg = "hello world!\n" libc.printf("Testing:%s&

Python调用Java代码部署及初步使用

Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载. 安装顺序: 1.pip install wheel 待wheel安装好以后,再安装已经下载的JPype1-0.6.2-cp36-cp36m-win_amd64.whl 文件 2.pip install JPype1-0.6.2-cp36-cp36m-win_amd64.whl 如果有问题,缺少库

python调用Java代码,完毕JBPM工作流application

1.缘由 有一庞大Python django webproject,要引入工作流引擎,像OA一样.方便的流程控制与管理.Python或django关于工作流的开源插件,稀少,并且弱爆了,终于选用java的开源框架JBPM.为了使Pythonproject整合Java框架,尝试过jbpm-console提供的 REST, 以失败告终,终于选用Python 直接调用Java代码.操作JBPM. 1.1pythonprojectREST与JBPM Workbench交互 失败 REST URL格式 h

python调用Go代码

Go 1.5发布了,其中包含了一个特性:可以编译生成动态链接库,经试验,生成的.so文件可以被python加载并调用.下面举个例子: 先写一个go文件main.go: package main import "C" //export Sum func Sum(a, b int) int { return a + b } func main() {} 然后编译go build -buildmode=c-shared -o sum.so main.go,会得到一个sum.so和一个sum.

python调用java代码 java虚拟机(jvm)

1.新建com文件夹,在里面新建 fibnq.java package com; public class fibnq { public fibnq(){} public int fb(int n){ if(n <2){ return 1; }else { return fb(n-1)+fb(n-2); } } } 2.在com文件夹路径打开cmd,编译fibnq.java javac ./fibnq.java 3.返回上一层目录 cd ../ 4.把fibnq类打包:注意   com要和fib

python 调用js代码

Python2   安装pyv8 pip install-egit://github.com/brokenseal/PyV8-OS-X#egg=pyv8 from pyv8 import PyV8 ctxt = PyV8.JSContext() ctxt.enter() # 创建一个jsContext对象并进入 ctxt.eval(js_str) # 执行js代码 接下来就可以使用这个ctxt来执行js脚本了.主要有两种用途: 1.调用js中的方法: #把strEnc绑定到js中的strEnc方

Python脚本调用C#代码数据交互示例(hello world)

原地址: http://www.djangochina.cn/forum.php?mod=viewthread&tid=247 随着项目的逐渐收尾, 对IronPython脚本也越来越熟悉,这里为IronPython脚本感兴趣但不入门的朋友写几篇使用心得,这是第一个:最简单的hello world程序.        首先,我们必须有一个IronPython脚本引擎库(IronPython.dll),我用的版本是V1.0,你可以在网上直接下到相关源码,编译后即生成IronPython.dll.1

python通过multiprocessing 实现带回调函数的异步调用的代码

下边代码段是关于python通过multiprocessing 实现带回调函数的异步调用的代码. from multiprocessing import Pool def f(x): if __name__ == '__main__': pool = Pool(processes=1) # Start a worker processes. result = pool.apply_async(f, [10], callback) # Evaluate "f(10)" asynchron

python调用接口,python接收post请求接口(附完整代码)

与Scala语言相比,Python有其独特的优势和广泛的应用,python调用接口,因此Spark也推出了PySpark,它在框架上提供了一个使用Python语言的接口,python接收post请求接口为数据科学家使用框架提供了方便. 众所周知,Spark框架主要由Scala语言实现,它还包含少量的Java代码.Spark面向用户的编程接口也是Scala.然而,Python在数据科学领域一直占据着重要的地位.仍然有大量的数据工程师使用各种Python数据处理和科学计算库,如numpy.熊猫.sc