tensorflow python3和c c++的混合编程 SWIG demo
环境
[email protected]:~$ swig -version
SWIG Version 3.0.12
[email protected]:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
[email protected]:~$ python3 --version
Python 3.6.7
https://python3-cookbook.readthedocs.io/zh_CN/latest/c15/p09_wrap_c_code_with_swig.html
http://www.swig.org/tutorial.html
[email protected]:~/swigDemo/swigsrc$ swig -python -py3 sample.i
>>> import example
>>> example.fact(3)
6
>>> example.fact(4)
24
>>> example.my_mod(4,3)
1
>>> example.get_time()
'Mon Mar 11 21:11:14 2019\n'
>>>
/* File : example.c */ #include <time.h> double My_variable = 3.0; int fact(int n) { if (n <= 1) return 1; else return n*fact(n-1); } int my_mod(int x, int y) { return (x%y); } char *get_time() { time_t ltime; time(<ime); return ctime(<ime); }
Interface file
Now, in order to add these files to your favorite language, you need to write an "interface file" which is the input to SWIG. An interface file for these C functions might look like this :
/* example.i */ %module example %{ /* Put header files here or function declarations like below */ extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time(); %} extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time();