Erstellen Sie beim Binden von C ++ - Code mit swig ein gemeinsames Objekt mit setup.py. Wenn ich versuche, dies unter Mac OS X zu tun, wird die Bibliothek selbst mit g ++ kompiliert. Wenn ich jedoch versuche, sie mit Clang zu kompilieren, wird eine Fehlermeldung angezeigt.
So was.
$ python setup.py build_ext
running build_ext
building '_Mykytea' extension
cc -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -I/usr/local/include -I/usr/local/opt/sqlite/include -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c mykytea_wrap.cxx -o build/temp.macosx-10.8-intel-2.7/mykytea_wrap.o
(Abkürzung)
In file included from mykytea_wrap.cxx:3481:
In file included from ./mykytea.hpp:9:
/usr/local/include/kytea/kytea.h:128:24: error: implicit instantiation of undefined template
'kytea::Dictionary<kytea::ModelTagEntry>'
if(dict_ != 0) delete dict_;
^
/usr/local/include/kytea/kytea.h:34:26: note: template is declared here
template <class T> class Dictionary;
^
2 warnings and 1 error generated.
error: command 'cc' failed with exit status 1
Wenn Sie Clang nicht anrufen, können Sie es in Ruhe lassen und mit gcc kompilieren.
$ ARCHFLAGS="-arch x86_64" CC=gcc CXX=g++ python setup.py build_ext
Und es ist ausreichend.
Eigentlich ist es vielleicht besser, es in setup.py zu schreiben, aber ich frage mich, ob es möglich ist, dynamisch zu bestimmen, womit die ursprüngliche Bibliothek kompiliert wurde.
Herzlichen Glückwunsch Kyteas Python-Bindung ist jetzt mit der neuesten Version 0.4.4 kompatibel.
Recommended Posts