2010-08-02 9 views
2

안녕 모두SWIG with C++ 사용

SWIG를 사용하여 C++ 코드를 Python으로 내보내려고합니다. 웹 사이트에서 읽은 C 샘플은 작동하지만 C++ 코드에 문제가 있습니다.

는 여기에 내가 전화를 줄 수 있습니다

나는 내가 다음과 같은 오류 메시지가

 
ImportError: ./_SWIG_TEST.so: undefined symbol: Py_InitModule4 

를받을 완료하고 당신이 무엇인지 알고 있나요

 
swig -c++ -python SWIG_TEST.i 
g++ -c -fPIC SWIG_TEST.cpp SWIG_TEST_wrap.cxx -I/usr/include/python2.4/ 
gcc --shared SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so -lstdc++ 

?

답변

4

파이썬 런타임 라이브러리에 연결하지 않은 것처럼 보입니다. gcc 줄에 -lpython24을 추가하는 것과 같은 것입니다. (필자는 현재 리눅스 시스템을 가지고 있지 않다.)

1

당신 수도 gcc

g++ -shared SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so 

를 사용하여 공유 라이브러리를 구축하기보다는 직접 ld를 사용해보십시오.

1

Mark가 말했듯이, 이것은 파이썬 라이브러리에 연결하는 데 문제가 있습니다. python-config --ldflags을 실행하면 어떤 플래그가 성공적으로 연결되어야하는지에 대한 힌트를 얻을 수 있습니다. 사실, 테스트를 컴파일 특히 고통 방법은 다음

가 완벽하지하는 것으로
swig -c++ -python SWIG_TEST.i 
g++ -c `python-config --cflags` -fPIC SWIG_TEST.cpp SWIG_TEST_wrap.cxx 
gcc --shared `python-config --ldflags` SWIG_TEST.o SWIG_TEST_wrap.o -o _SWIG_TEST.so -lstdc++ 

; 때로는 여분의 물건이나 상충되는 물건을줍니다. 그러나 이것은 확실히 도움이 될 것입니다.