欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python擴(kuò)展C/C++庫的方法(C轉(zhuǎn)換為Python)

 更新時(shí)間:2020年10月15日 10:04:48   作者:Boys_Wu  
這篇文章主要介紹了Python擴(kuò)展C/C++庫的方法(C轉(zhuǎn)換為Python),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

參考網(wǎng)址:https://www.shanlily.cn/archives/330

一、簡介

Python是個(gè)非常流行的解釋型腳本語言。而C是一個(gè)非常流行的編譯語言。由于其編譯的性質(zhì),導(dǎo)致C一般比Python要快,但是它是更底層的。相對的,Python編程更加快速和簡單。故而將C庫作為Python庫的擴(kuò)展極為必要,使得Python既融合了自身的優(yōu)點(diǎn),又融合了C語言的優(yōu)點(diǎn),正是因?yàn)檫@些性質(zhì)使得Python越來越流行。

二、通過swing擴(kuò)展C庫

(1) 安裝swig

命令: sudo apt-get install swig

(2) 準(zhǔn)備好要轉(zhuǎn)換的C源文件和C頭文件, 可參考下面的代碼:
新建頭文件:Conver_Testswig.h,并添加如下內(nèi)容:

dvoid Table99(int n);
void Fabocci(void);
int Max_value(int value1, int value2);

新建.c文件:Conver_Testswig.c,并添加如下內(nèi)容:

#include <stdio.h>
#include "Conver_Testswig.h"

// 打印乘法表
void Table99(int n)
{
 int i, j;
 for(i = 1; i <= n; i++)
 {
  for(j = 1; j <= n; j++)
  {
   printf("%d*%d=%-4d", i, j, i*j);
  }
  printf("\n");
 }
}

// 打印斐波那契數(shù)列的前20個(gè)
void Fabocci(void)
{
 long int f1, f2;
 f1 = f2 = 1;
 int i;
 for(i = 1; i <= 20; i++)
 {
  printf("%12ld %12ld", f1, f2);
  if(i % 2 == 0)
   printf("\n");
  f1 = f1 + f2;
  f2 = f1 + f2;
 }
}

// 返回兩個(gè)數(shù)值中的最大那個(gè)。
int Max_value(int value1, int value2)
{
 if(value1 > value2)
 {
  return value1;
 }

 return value2;
}

(3) 創(chuàng)建一個(gè) .i 文件來配置swig。,文件為:Conver_Testswig.i ,并添加如下內(nèi)容:

%module Conver_Testswig

%{
#define SWIG_FILE_WITH_INIT
#include "Conver_Testswig.h"
%}

void Table99(int n);
void Fabocci(void);
int Max_value(int value1, int value2);

簡單介紹:

%module Conver_Testswig 用于配置swig后產(chǎn)生的文件名稱
#define SWIG_FILE_WITH_INIT 規(guī)定這個(gè)C文件將會編譯成Python模塊
#include "Conver_Testswig.h" 包含頭文件

(4) 配置swig。在含有Conver_Testswig.i文件的目錄下執(zhí)行如下命令:

swig -python Conver_Testswig.i

執(zhí)行該命令會生成一個(gè)Conver_Testswig_wrap.c和Conver_Testswig.py文件則代表你配置成功了.

(5) 通過setup庫進(jìn)行編譯。新建一個(gè) setup.py 文件并添加內(nèi)容:

① 編寫setup.py文件, 請參考以下代碼:

from distutils.core import setup, Extension
MOD = '_Conver_Testswig'

example_module = Extension(MOD, sources=['Conver_Testswig_wrap.c', 'Conver_Testswig.c'], )

setup(name=MOD,ext_modules = [example_module],)

注意: 請務(wù)必注意生成目標(biāo)文件名稱需要加”_”

② 通過setup.py文件進(jìn)行編譯

命令: python setup.py build

編譯完成后, 可在/build/…/…找到相應(yīng)庫文件,如果是在linux系統(tǒng)下,一般生成的文件中含有.so庫文件,將該文件拷貝到pythonsite-packages包管理目錄下即可使用或者在build編譯后再使用install命令將該.so文件生成在site-packages包管理目錄下。此處我的python環(huán)境是新建的一個(gè)虛擬環(huán)境。

命令:python setup.py install

在這里插入圖片描述
在這里插入圖片描述

(6) 開始運(yùn)行測試吧,在pycharm中測試。

打印乘法表:

在這里插入圖片描述

打印斐波那斐契數(shù)列的前20個(gè):

在這里插入圖片描述

總結(jié)

到此這篇關(guān)于Python擴(kuò)展C/C++庫的方法(C轉(zhuǎn)換為Python)的文章就介紹到這了,更多相關(guān)Python擴(kuò)展C/C++庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論