`
tcspecial
  • 浏览: 906558 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

python调用c/c++库

阅读更多

    Python以其简单的语法及众多第三方库的支持,使得运用非常广泛. 但是如何利用Python进行混合调用,调用已完成的*.dll库功能,刚好最近偶尔看到swig这个小工具,能够生成包装后接口文件,使得脚本语言间接调用c/c++库.  一般像java/c#等语言只能调用纯C类库,Swig竟然可以处理C++库,可能内部作了处理,稍候研究

   

    一. 下载 Swig 直接解压即可

    二. C代码

// example.h 
#ifndef _EXAMPLE_H
#define _EXAMPLE_H

int Add(int a,int b);

#endif 

// example.cpp
#include "example.h"

int Add( int a,int b )
{
	return a+b;
}

   

   三. 编写接口描述文件,生成python模块

   接口说明文件: example.i

%module example
%{
#include "example.h"
%}

%include "example.h"

    

swig -python example.i

    此时会在工程下生成 example.py 和 example_wrap.c 两个文件

  

   四. VC6下编译扩展

   1. 建立空的win32动态库工程

   2. 将example.h example.c example_wrap.c三个文件添加至工程中

   3. 设置Include path: d:\Python27\include, 设置Lib path: d:\Python27\libs

   4. 设置输出文件名: _example.pyd ,千万不能忘了下划线,example.py中会默认调用_example这个模块

   5. 成功编译release版本后会在目录中生成文件 _example.pyd 

 

   五.测试运行

   运行结果

   注: _example.pyd和example.py必须在同一目录,否则会找不到模块

 

    

  • 大小: 27.7 KB
分享到:
评论

相关推荐

    详解python如何调用C/C++底层库与互相传值

    Python调用C/C++库,我现在能做到的有两种方式 1.extern “C” 导出(互相传值比较麻烦,不建议使用这种方式): 将C/C++库做成和平常一样的DLL和或者.so,比如: //.h文件 #include <Python> //.cpp文件 //C/C++ ...

    python调用C/C++ demo

    2. Python调用C++:通过`ctypes`和`extern "C"`封装 由于C++的名称修饰(name mangling),直接使用`ctypes`调用C++函数会遇到问题。解决方法是在C++代码中使用`extern "C"`来声明函数,就像在C语言示例中那样。或者...

    Python调用C/C++动态链接库的方法详解

    Python调用C/C++动态链接库(DLL)是跨语言编程中常见的技术,它允许Python程序利用C或C++编写的高效代码。本篇将详细解释如何实现这一过程。 首先,我们需要了解C/C++动态链接库。DLL(Dynamic Link Library)是一种...

    python加载自己写的c/c++程序

    在Python中调用C/C++库通常有以下几种方式: 1. **ctypes库**:这是Python标准库的一部分,可以直接加载C编译的动态链接库。首先,我们需要编写C代码并编译成DLL,然后在Python中使用ctypes库加载这个库,并指定...

    C/C++、matlab、python:生成c动态库,matlab、python调用

    最后,Python调用C动态库主要依赖于`ctypes`库: 1. **导入动态库**:在Python中,使用`ctypes.cdll.LoadLibrary`加载动态库文件。记得根据操作系统选择正确的文件名,例如`ctypes.cdll.LoadLibrary('libmylib.so')...

    基于Python和C_C++的分布式计算架构.pdf

    接着,通过Python调用shell命令编译SWIG接口文件,并将编译好的模块部署到相应节点。 除了SWIG技术,文章还强调了RPYC的作用,即在节点间传递同步。RPYC是基于Remote Procedure Call (RPC)的Python库,通过网络实现...

    分别基于Python和C/C++的特征值和特征向量求解源代码(含运行结果和案例说明)

    本资源提供了基于Python和C/C++两种编程语言的特征值和特征向量求解源代码,便于开发者和学习者进行实践操作。 首先,我们来看Python实现。Python以其简洁易读的语法和丰富的科学计算库而被广泛用于数据分析和算法...

    ubuntu中python调用C/C++方法之动态链接库详解

    在Ubuntu系统中,Python调用C或C++的方法通常是通过动态链接库(Dynamic Link Library,简称DLL)来实现的。动态链接库允许Python程序利用C或C++编写的高效功能,而无需将整个C/C++代码编译进Python解释器。这种技术...

    linux 下 python调用c或者c++编写的代码使用案例

    然后在Python中,你可以通过ctypes导入该库,并定义C函数的原型,以Python调用的方式来使用它们。例如,你可能需要定义一个`void func(int)`的C函数,然后在Python中使用`ctypes.CDLL("libname.so").func`来调用。 ...

    python调用C与C++语言.pdf

    本文档介绍了如何使用Python调用用C语言或C++编写的动态链接库(DLL),这对于计算机视觉和人工智能领域的开发者尤为有用,因为他们可以使用性能更高的语言编写算法,同时在Python中享受高级特性和丰富的库。...

    C/C++与Python混编的详细文件

    9. **Python调用C/C++代码**:在Python脚本中,使用ctypes导入.so文件,通过`cdll`或`cdll.LoadLibrary`加载库,然后定义函数原型并调用。 10. **性能考虑**:使用C/C++编写的动态库通常比纯Python代码运行得更快,...

    python,c/c++,java,nodejs,php,go 本地代码运行

    这个工具可能包含了编译和运行C/C++代码的功能,通过接口调用相应的编译器(如GCC或Clang)。 4. **Java**: Java是一种跨平台的面向对象的语言,广泛应用于企业级应用开发。该工具可能集成了JDK,允许用户编写、...

    Python中调用C++dll例子

    `ctypes`是Python的一个标准库,它允许我们直接调用C语言编译的动态链接库,从而实现了Python与C/C++代码的交互。 首先,我们需要理解DLL是什么。DLL(Dynamic Link Library)是Windows操作系统中的一个共享库,...

    Python使用ctypes调用C/C++的方法

    python使用ctypes调用C/C++ 1. ctpes介绍 ctypes is a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to...

    Python & C/C++联合编程实战

    一 环境准备 和Python语法快速入门二 Python CTypes访问C/C++动态链接库三 Python源码跨平台的编译四 Python的C/C++扩展库_模块、函数、类扩展五 Python的多线程GIL及在web中调用ffmpeg扩展示例六 Python虚拟机定制-...

    abb robot studio与python/C/Matlab等的接口 open_abb-fuerte-devel.rar

    此压缩包"open_abb-fuerte-devel.rar"可能包含了一个针对ABB Robot Studio的开源开发工具或库,用于扩展其功能,特别是与Python、C/C++和Matlab等编程语言的接口。 接口技术是连接不同系统和应用的关键,它允许数据...

    Python嵌入C/C++进行开发详解

    扩展到Python调用C/C++的DLL动态链接库,首先需要创建一个DLL工程,并导出C函数供Python调用。例如: **hello.h** ```cpp #ifdef EXPORT_HELLO_DLL #define HELLO_API __declspec(dllexport) #else #define HELLO_...

    python调用c++动态库Demo

    本教程将详细讲解如何使用Python调用C++编写的动态链接库(DLL),并涉及回调函数的实现,非常适合初学者学习。 首先,我们需要了解动态库的概念。动态库(Dynamic Link Library,简称DLL)是一种包含可由多个程序...

Global site tag (gtag.js) - Google Analytics