Bonjour,
j'ai créer une librairie en c++ que j'ai partagé via Swig.
je l'utilise sans problème sur une architecture 32 bits.
je voudrai pouvoir utiliser ma librairie dans mon architecture 64 bits.
la contrainte étant que ma librairie utilise des modules .so qui sont 32 bits et ne peuvent être compiler en 64.
Est-ce possible ? Comment ?
voici ce que j’utilise (version allégé) pour la création de ma lib partagé :
lors de l'import depuis python 64 j'obtient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 # Création de la librairie partager Python ar rcs obj/linuxrel/libeconf.a obj/linuxrel/econf.o echo '/* econf.i */ %module econf %{ #include "../../econf.h" %} %include "../../econf.h"' > obj/linuxrel/econf.i swig -python -c++ obj/linuxrel/econf.i g++ -m32 -c -fPIC -I/usr/include/python2.6 \ -I/usr/easyvalid/tools/Econf/Framework/framework_sdk_v1.4.7/include obj/linuxrel/econf_wrap.cxx g++ -m32 -O3 -shared -L/usr/easyvalid/tools/Econf/Framework/framework_sdk_v1.4.7/bin -Lobj/linuxrel/ -lpython2.6 -Wl,-soname,_econf.so econf_wrap.o -leconf -lsndfile -lm -ldl -lpthread -lrt -o obj/linuxrel/_econf.so
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 [easyvalid@EasyValid linuxrel]$ python -m econf Traceback (most recent call last): File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code exec code in run_globals File "/usr/easyvalid/tools/Econf/Convert/obj/linuxrel/econf.py", line 25, in <module> _econf = swig_import_helper() File "/usr/easyvalid/tools/Econf/Convert/obj/linuxrel/econf.py", line 21, in swig_import_helper _mod = imp.load_module('_econf', fp, pathname, description) ImportError: /usr/easyvalid/tools/Econf/Convert/obj/linuxrel/_econf.so: wrong ELF class: ELFCLASS32
Partager