मैं स्विंग के साथ test.cpp
में फ़ंक्शन foo को लपेटने की कोशिश कर रहा हूं। मेरे पास एक शीर्षलेख foo.h
है जिसमें फ़ंक्शन foo की घोषणा शामिल है। test.cpp
एक बाहरी हैडर ex.h
और साझा वस्तु फ़ाइल libex.so
/usr/lib64
SWIG + setup.py: ImportError: गतिशील मॉड्यूल init फ़ंक्शन (init_foo) को परिभाषित नहीं करता है
में स्थित मैं blog post from here पीछा किया पर निर्भर है।
मैं python setup.py build_ext --inplace
के साथ मॉड्यूल बनाने में सक्षम हूं। हालांकि जब मैं इसे आयात करने का प्रयास करता हूं तो मुझे निम्न त्रुटि मिलती है और मुझे यकीन नहीं है कि मैं क्या खो रहा हूं क्योंकि इस त्रुटि के साथ अधिकांश अन्य प्रश्न setup.py
फ़ाइल का उपयोग नहीं करते हैं। नीचे वर्तमान में मेरे पास एक उदाहरण है।
आयात करने _foo पर त्रुटि:
>>> import _foo
ImportError: dynamic module does not define init function (init_foo)
test.i
%module foo
%{
#pragma warning(disable : 4996)
#define SWIG_FILE_WITH_INIT
#include "test.h"
%}
%include <std_vector.i>
%include <std_string.i>
%include "test.h"
test.cpp
#include "ex.h"
void foo(int i){
return;
};
test.h
#include "ex.h"
void foo(int i);
setup.py
try:
from setuptools.command.build_ext import build_ext
from setuptools import setup, Extension, Command
except:
from distutils.command.build_ext import build_ext
from distutils import setup, Extension, Command
foo_module = Extension('_foo',
sources=['foo.i' , 'foo.cpp'],
swig_opts=['-c++'],
library_dirs=['/usr/lib64'],
libraries=['ex'],
include_dirs = ['/usr/include'],
extra_compile_args = ['-DNDEBUG', '-DUNIX', '-D__UNIX', '-m64', '-fPIC', '-O2', '-w', '-fmessage-length=0'])
setup(name='mymodule',
ext_modules=[foo_module],
py_modules=["foo"],
)
आप इसे उत्पन्न फ़ाइल संकलन एक चादर फाइल उत्पन्न देखने और लिंक कर रहे हैं करने के लिए
से अपने
setup.py
में घोषणा का समायोजन मॉड्यूल में? कुछ 'swig -python -C++ -o foo_wrap.cpp foo.i', 'gcc ... foo_wrap.cpp ...', 'g ++ ... foo_wrap.o ... जैसा कि ब्लॉग में आउटपुट में है पोस्ट – Thomas@ थॉमस हां एक लंबा/समान आउटपुट है जो मैं एक पल में जो देख रहा हूं उसे पोस्ट करूंगा। – pyCthon
@ थॉमस यहां आउटपुट है, http://pastebin.com/MSChdNMy – pyCthon