Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
informatique:swig [2017/09/06 14:11] – 134.158.87.12 | informatique:swig [2019/03/11 09:54] (Version actuelle) – 159.84.20.98 |
---|
====== Swig ====== | ====== Swig ====== |
| |
[[wpfr>SWIG]]: en écrivant quelques lignes de C/C++ supplémentaire, Swig permet ensuite de créer un module/lib (dll) python qui permet d'interfacer le code C/C++. | [[wpfr>SWIG]]: en écrivant quelques lignes de C/C++ supplémentaire, Swig permet ensuite de créer un module/lib (dll, so, pyd) python qui permet d'interfacer le code C/C++. |
| |
| Un tuto, un peu vieux mais intéressant néanmoins :\\ |
| [[http://matthieu-brucher.developpez.com/tutoriels/python/swig-numpy/]] |
| |
Mes quelques soucis pour compiler/linker sous Win7: | Mes quelques soucis pour compiler/linker sous Win7: |
| |
Site officiel: | Site officiel: |
[[http://swig.org]] | [[http://swig.org]]\\ |
| pour l'installation sous ubuntu: [[https://doc.ubuntu-fr.org/swig]] |
| |
Comparatif avec d'autre solutions: | Comparatif avec d'autre solutions: |
[[https://stackoverflow.com/questions/456884/extending-python-to-swig-not-to-swig-or-cython#456949]] | [[https://stackoverflow.com/questions/456884/extending-python-to-swig-not-to-swig-or-cython#456949]] |
| |
===== Exemple avec le pompage (lmapc104) ===== | Débugger C++/Swig/python: pdb et gdb !!\\ |
dans une commande (cmd) "dos":\\ | [[https://stackoverflow.com/questions/13178116/debugging-mixed-python-c-code-in-eclipse]] |
C:\workspace\pompageGC\src> | |
<code>C:\Users\pompage\Downloads\swigwin-3.0.12\swig.exe -python -c++ pompage.i</code> | |
qui crée les fichiers //src/pompage_wrap.cxx// et //src/pompage.py// | |
| |
dans un terminal (mingw-64)(ds explorer windows, clic-droit sur le répertoire workspace\pompageGC\src puis "//Git Basch here//") :\\ | |
pompage@LMAPC104 MINGW64 /c/workspace/pompageGC (swig) | |
<code>$ g++ -c -std=c++14 -D_hypot=hypot -DWIN32 src/*.cpp src/pompage_wrap.cxx -I./lib/ -I/C/Program\ Files\ \(x86\)/Python36-32/include</code> | |
qui compile avec python, le -I./lib/ est pour le PComm.h (carte Moxa), -D_hypot=hypot pour la compatibilité avec Python ((le https://stackoverflow.com/questions/10660524/error-building-boost-1-49-0-with-gcc-4-7-0)) | |
| |
pompage@LMAPC104 MINGW64 /c/workspace/pompageGC (swig) | |
<code>$ g++ -shared *.o /c/ProgramData/Anaconda3/python36.dll lib/PCOMM.LIB /c/Windows/System32/msvcr120.dll -L./lib/ -lpci-dask64 -o _pompage.pyd</code> | |
qui réalise l'édition de liens (link) et crée les fichiers //_pompage.pyd// | |
| |
On déplace //pompage.py// à la racine du projet: | |
<code>$ mv src/pompage.py .</code> | |
| |
à nouveau dans une commande "dos", on teste: | |
<code> | |
C:\workspace\pompageGC\src>cd .. | |
| |
C:\workspace\pompageGC>C:\ProgramData\Anaconda3\python.exe | |
Python 3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)] on win32 | |
Type "help", "copyright", "credits" or "license" for more information. | |
>>> import pompage | |
>>> mc = pompage.myControler("test", 1) | |
unable to open comport | |
taille fichier debuglog: 6145 | |
>>> pression = mc.get_pression() | |
>>> pression | |
1000.0 | |
>>> | |
</code> | |
| |