`
daweibalong
  • 浏览: 44696 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Python调用C/C++初步

阅读更多

测试库要求做到全部自动化--动态添加新的计算图像指标可以直接不用重写底层java程序……这段时间在学Python,由于Python的ctypes可以试python轻松调用动态链接库,从而调用c/c++程序,于是想到可以在添加指标的时候有管理员再上传相关方法的dll或so文件,由Python进行调用新的指标计算方法进行重新计算。不知效果如何,先测试简单的调用:

1、编写test.c
  1. #include <stdlib.h>  
  2.   
  3. int foo(int a, int b)  
  4. {  
  5.     printf("Your input %i and %i\n", a, b);  
  6.     return a + b;  
  7. }  
 
2、 gcc编译:gcc -o test.so -shared -fPIC test.c
3、 编写test.py
  1. import ctypes  
  2. ll = ctypes.cdll.LoadLibrary 
  3. lib = ll("./test.so")  
  4. lib.foo(13)  
4、运行
 python test.py
成功运行Python调用C/C++初步

不过在调用c++文件的时候会发生错误,具体原因不详,但依然可以调用!!!:
1、编写c++文件test2.cpp
#include<iostream>
using namespace std;
void foo2(int a,int b)
{
    cout<<a<<" "<<b<<endl;
}
 
//以下为必须
extern "c"
{
    void cfoo2(int a,int b)
    {
        foo2(a,b);
    }
}
 
2、编译c++文件:
   g++ -o test2.so -shared -fPIC test2.c
3、 编写test2.py
  1. import ctypes  
  2. ll = ctypes.cdll.LoadLibrary 
  3. lib = ll("./test2.so")  
  4. lib.cfoo2(13)
  5.   
4、运行:
python test2.py
成功!

问题补充:
1、在windows下调用dll,如果过python是64位,那么在写dll时编译要用x64,要不然会出现错误的win32提示。
2、在h文件中:
 extern "C" int __declspec(dllexport)add(int x,int y);
 
cpp:
int __declspec(dllexport)add(int x,int y)
{
    cout<<x<<" "<<y<<endl;
    return x+y;
}
 
分享到:
评论

相关推荐

    python调用C/C++ demo

    看到python和C/C++代码怎么调用,参考网上的写了两个demo,分别是python调用C和C++的,欢迎下载!

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

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

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

    本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: //hello.h #ifdef EXPORT_HELLO_DLL #define HELLO_API __declspec...

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

    主要给大家介绍了关于如何在ubuntu中python调用C/C++方法之动态链接库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧

    如何在python中引用c/c++函数

    如何在python中引用c/c++函数Python调用c/c++python调用c Python调用c/c++ 由于python性能问题的原因,在实际项目中往往会在python中去调用c的一些方法,本文将介绍在centos8下面python去调用c的方法。 python调用c ...

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

    此代码是利用python 调用C语言和C++语言的动态链接库,该方法可将计算机视觉部分用C++书写,执行期用python,AI行业很好用的方法

    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...

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

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

    C/C++ 多线程调用嵌入Python

    配合文章代码实现 c++ 多线程调用嵌入的Python 文章详情 https://blog.csdn.net/u010383605/article/details/82057084 Python下载地址: https://www.python.org/downloads/windows/

    如何利用Boost.Python实现Python C/C++混合编程详解

    extending 所谓python 程序中调用c/c++代码, 其实是先处理c++代码, 预先生成的动态链接库, 如example.so, 而在python代码中import example;即可使用c/c++的函数 . embedding c++代码中调用 python 代码. 两者都...

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

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

    c,c++,python源代码生成流程图

    免费软件,可自动分析C/C++/Java/Python/C#/Objective-C等项目的源代码并生成流程图和函数调用关系图。生成的流程图可以和源代码互相定位,有助于分析源代码,是阅读其他人写的代码或者自己很久前写的代码的利器。

    Python调用C函数实例

    Python C/C++混编 Python 调用C函数 传递参数为:值传递,指针传递,数组

    Python中调用C++dll例子

    Python中调用C++dll例子,使用python中的ctypes。

    Python调用C/C++的方法解析

    Python是解释性语言, 底层就是用c实现的, 所以用python调用C是很容易的, 下面就总结一下各种调用的方法, 给出例子, 所有例子都在ubuntu9.10, python2.6下试过. 1. Python 调用 C (base) 想在python中调用c函数, 如...

    C++调用Python并传参

    C#调用C++,C++调用Python并传参,包括C++向python传递图片数据,C++向python传递组数据,C++向python传递字符串数据,C++向python传递结构体数据,C++初始化python类数据并调用方法,实际案例,能直接运行,需要安装...

    python 调用 C++ dll 32位 64位 问题 ctypes.cdll.LoadLibrary

    t532.rar 测试代码 https://blog.csdn.net/wowocpp/article/details/105382257 python 调用 C++ dll 32位 64位 问题 ctypes.cdll.LoadLibrary

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

    c/c++ 编译为 .so文件后 使用Python调用实现混编 c++ 有class 版

Global site tag (gtag.js) - Google Analytics