相关环境配置

  • mingw,选择相应的32位、64位的版本,主要用于编译动态链接库dll文件,可用vs替代,这里我选择轻量级的mingw
  • windows64位地址:https://sourceforge.net/projects/mingw-w64/
  • 安装过程中 Architecture选项选择X86_64,其他默认即可,把安装好的mingw的bin目录加入环境配置的PATH列表

一、编写C函数

/*最大公约数算法*/

unsigned int gcd(unsigned int a,unsigned int b)
{
unsigned int k=;
if (a==) return b;
else if (b==) return a;
while((!(a&))&&(!(b&))){
k<<=;
a>>=;
b>>=;
}
while(!(a&))a>>=;
while(!(b&))b>>=;
if(a<b) a^=b,b^=a,a^=b;
while(a!=b){
a-=b;
if(a<b) a^=b,b^=a,a^=b;
}
return k*a;
}

二、编译动态链接库

为了编译成动态链接库,在入相应导出动态链接库的代码,完成后保存为.c的c文件,本例保存为 stein_gcd.c

/*最大公约数算法*/

#ifdef _MSC_VER
#define DLL_EXPORT __declspec( dllexport )
#else
#define DLL_EXPORT
#endif DLL_EXPORT unsigned int gcd(unsigned int a,unsigned int b){
/*...省略上述c代码块*/
}

在c文件目录打开powshell,执行命令

gcc -m64 -fPIC -shared -msse4  stein_gcd.c -o stein_gcd.dll

完成后会得到动态链接库  stein_gcd.dll

三、PYTHON调用动态链接库

用Ctypes调用dll

from ctypes import *
steingcd = cdll.LoadLibrary('stein_gcd.dll')#dll参数是dll的路径
print(steingcd.gcd(39,26))

简单的demo就完成了。更多细致的比如Ctypes的各类型连接python和c时对应的数据类型,则去细致的翻看ctypes文档,当然也还有更多的方法,比如直接编译成python直接调用的库,懒先不写了

PYTHON调用C接口(基于Ctypes)实现stein算法最大公约数的计算的更多相关文章

  1. python调用ice接口

    今天用python调用ice接口,遇到如下提示 ImportError: No module named Ice 解决方案是 set PYTHONPATH=C:\Program Files\ZeroC ...

  2. python 调用RESTFul接口

    本周需要将爬虫爬下来的数据入库,因为之前已经写好PHP的接口的,可以直接通过python调用PHP接口来实现,所以把方法总结一下. //python编码问题,因为好久用,所以很容易出现 # -*- c ...

  3. Python调用API接口的几种方式 数据库 脚本

    Python调用API接口的几种方式 2018-01-08 gaoeb97nd... 转自 one_day_day... 修改 微信分享: 相信做过自动化运维的同学都用过API接口来完成某些动作.AP ...

  4. Python调用API接口的几种方式

    Python调用API接口的几种方式 相信做过自动化运维的同学都用过API接口来完成某些动作.API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课. 本文主要介绍py ...

  5. python调用zabbix接口实现Action配置

    要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...

  6. python调用RPC接口

    要调用RPC接口,python提供了一个框架grpc,这是google开源的 rpc相关文档: https://grpc.io/docs/tutorials/basic/python.html 需要安 ...

  7. Python的Web编程[2] -> WebService技术[0] -> 利用 Python 调用 WebService 接口

    WebService技术 / WebService Technology 1 关于webservice / Constants WebService是一种跨编程语言和跨操作系统平台的远程调用技术. W ...

  8. Python调用服务接口

    #! /usr/bin/env python # coding=utf-8 ############################################################## ...

  9. python调用webservice接口

    使用suds这个第三方模块 from suds.client import Clienturl = 'http://ip:port/?wsdl'cilent=Client(url)print cile ...

随机推荐

  1. 3 Suggested Oracle Certifications For Oracle Form's Developers

    The following are the most suggested Oracle Certifications for Oracle Application Developers in Form ...

  2. dedecms调用文章发布日期

    <span>[field:pubdate function="MyDate('m-d',@me)"/]</span>

  3. Youtube深度学习推荐系统论文

    https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45530.pdf https://zh ...

  4. 清空catalina.out报错Permission denied

    今天在清空catalina.out的时候报错 [yangkun@sg logs]$ sudo echo '' > catalina.out -bash: catalina.out: Permis ...

  5. windows 控制台cmd乱码的解决办法

    windows 控制台cmd乱码的解决办法 我本机的系统环境: OS Name: Microsoft Windows 10 企业版 OS Version: 10.0.14393 N/A Build 1 ...

  6. vue v-model使用说明

    1.概述 v-model 会忽略所有表单元素的 value.checked.selected 特性的初始值而总是将 Vue 实例的数据作为数据来源.你应该通过 JavaScript 在组件的 data ...

  7. Vue 响应式属性

    本文参考自:https://www.w3cplus.com/vue/vue-reactivity-and-pitfalls.html 1.概述 当创建一个Vue实例时,每个数据属性.组件属性等都是可以 ...

  8. MongoDB 快速入门

    本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. MongoDB No ...

  9. 解析iscroll-小demo

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  10. 深入了解Struts1的执行机理

    要说Struts1的工作流程.就必需要说一下Model1和Model2了.由于这个框架是踏着他们的尸骨一步一步的发展起来的. Model1开发模式,想想我们刚刚開始接触Java的时候,我们用的就是这样 ...