Swig的應用之python呼叫C

2021-09-25 22:17:25 字數 1081 閱讀 1650

解壓後執行 ./configure

make && make install

1.新建cal.h

int add(int a, int b);

int sub(int a, int b);

2.新建cal.cpp

int add(int a, int b)

int sub(int a, int b)

1.新建cal.i

%module cal

%%include "cal.h"

2.在終端輸入swig -python -c++ cal.i生成cal_wrap.cxx和cal.py

3.新建setup.py檔案

from distutils.core import setup

from distutils.core import extension

test_module = extension(name = '_cal',

sources = ['cal_wrap.cxx','cal.cpp'],

)setup(name = 'cal_package',

version = '1.0',

author = 'mightypants',

ext_modules = [test_module],

py_modules = ['cal'],

)

4.在終端輸入python setup.py build,等待編譯完成

1.新建測試檔案test_cal.py

import cal

print(cal.sub(3,2))

2.將build/lib.linux-x86_64-2.7/路徑下的cal.py_cal.so檔案複製到test_cal.py檔案目錄下,在終端輸入python test_cal.py即可測試結果

python用swig調dll是個偽命題

只有自己寫的 生成的dll才可以通過swig來調,而且實際上調的也不是dll,而是.pyd檔案。也就是說用生成dll的 通過.i和 swap.cxx檔案一起生成乙個.pyd檔案,python在呼叫c 的函式的時候實際是鏈結的.pyd。沒有這個檔案是不能成功調dll的。用boost.python調dl...

python應用之 最多約數問題

問題描述 給定2個正整數a b 計算a和b之間約數個數最多的數 num int num result 2 if num 2 return 0 for temp in range 2,num if num temp 0 result 1 return result for temp in range ...

遞迴應用之求和 進製轉換Python

1.求和 給出乙個列表,用遞迴的方式求和。其實求和也是兩個數相加,然後再相加,直到求和完畢。所以可以用遞迴的方式,每次呼叫求和函式,直到列表中的數字還有乙個,返回即可。def resum lists if len lists 1 return lists 0 else return lists 0 ...