欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python调用C++动态链接库

程序员文章站 2022-03-16 10:14:38
系统:win7 64位python 版本:python3.6.5 32位C++编译:MinGW (Minimalist GNU for Windows)。 注意这是win32 的版本,注意位数应当与已经安装的Python保持一致。1,安装下载MinGW, Download mingw-get-setup.exe (86.5 kB) 下载地址:http://sourceforge.net/projects/mingw/files/Instal......

系统:win7 64位

python 版本:python3.6.5  32位

C++编译:MinGW (Minimalist GNU for Windows)。

                 注意这是win32 的版本,注意位数应当与已经安装的Python保持一致。

1,安装下载MinGW,   Download mingw-get-setup.exe (86.5 kB)

      下载地址:http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/

安装过程:

(1)默认安装目录 C:\MinGW

python调用C++动态链接库

 

(2)一定选上安装 C++ Compiler和 Objectiv-C Compiler。

python调用C++动态链接库

 

 

下载安装需要点儿时间,期间失去连接N次。嘤嘤嘤 ,是的,端起茶水,找个电视剧看看吧。我选择的是下载并安装,选择全部下载后安装应该好一些吧。

(3)安装完毕之后,设置环境变量。

“我的电脑”图标上点击右键,选择“属性”,打开系统属性面板。

选择“高级”标签,点击“环境变量”按钮。

python调用C++动态链接库

是的,没错,是这里,系统变量。

分别新建:

  MINGW_HOME = C:/MinGW

LIBRARY_PATH = %MINGW_HOME%/lib

C_INCLUDE_PATH = %MINGW_HOME%/include


CPLUS_INCLUDE_PATH = %MINGW_HOME%/include/c++/3.4.5;%MINGW_HOME/include/c++/3.4.5/mingw32;%MINGW_HOME/include/c++/3.4.5/backward;%MINGW_HOME%/include

一共四个系统变量 。

还没完。再来。

python调用C++动态链接库

添加path=%path%;%MINGW_HOME%/bin

至此,MinGW设置完毕。

让我们检测一下G++是否安装成功。

在cmd中输入  g++ --version,显示如下,即说明安装成功

python调用C++动态链接库

 

不要以为我们要完成了哦。今天我们要说的是python调用C++,MinGW只是我们的一个工具,长征只走了一步而已。为了和以下主要内容区别开。我打一个分割线吧。还是有些小开心,毕竟下载了好久才安装完毕。Let's go!!!

_____________________________________________________________________________________________________

C++源文件  test.cpp

#include <stdio.h>  

extern "C"  //要加extern "C",  C为大写,小写会无法识别。
{
    int add(int a, int b)
    {
        return a + b;
    }

    void print_sum(unsigned long ulNum)
    {
        while (ulNum != 0)
        {
            printf("The ulNum is : %u\n", ulNum--);
        }
    }
}

在test.cpp  所在文件目录中进入cmd:

输入:g++ -o test.so -shared -fPIC test.cpp     

python调用C++动态链接库

 

在文件目录中会生成  test.so 动态链接库文件

python调用C++动态链接库


 

python调用C++的py文件


# -*-encoding:utf-8 -*-
from ctypes import *
import time

if __name__=='__main__':
    time_begin=time.clock()

    dll=CDLL('./test.so')

    print(dll.add(5,7))
    dll.print_sum(10000)

    t=time.clock()-time_begin
    print("\nUse time: %s" %t)

将 test.so和test.py放在同一文件夹内。运行py文件检测一下吧。

python调用C++动态链接库

还不错,一次性运行成功。

本文地址:https://blog.csdn.net/weixin_44174080/article/details/107662413