2009-11-26 1 views
1

SWIG를 사용하여 gtkglext에 연결 한 모든 항목이 종료 될 때 Python과 충돌합니다. 왜 이렇게 추락합니까?왜 SWIG가 gtkglext에 링크되었을 때 Python을 크래시합니까?

테스트 테스트 :

%module test 
%{ 
void test() { printf("Test.\n"); } 
%} 
void test(); 

세션 :

$ swig -python test.i 

$ g++ -I/usr/include/python2.6 -shared -fPIC -o _test.so test_wrap.c -lpython2.6 

$ python -c 'import test; test.test()' 
Test. 

$ g++ -I/usr/include/python2.6 -shared -fPIC -o _test.so test_wrap.c -lpython2.6 `pkg-config --libs gtkglext-1.0` 

$ python -c 'import test; test.test()' 
Test. 
Segmentation fault 

어떤 아이디어? 감사합니다 ...

+0

gdb에서 실행하면 어떻게됩니까? '파이썬 -v'를 사용하는 추적은 어떨까요? test.test()를 호출하지 않고 코어 덤프가 발생합니까? 또한 setup.py 파일을 사용하여 확장 기능을 빌드 해보십시오. 따라서 Python 자체에서 컴파일러 플래그와 필수 라이브러리 및 라이브러리 순서를 관리합니다. –

답변

1

gtk를 올바르게 시작해야합니다.

$ cat test.i 
%module test 
%{ 
void test() { printf("Test.\n"); } 
%} 
void test(); 
$ swig -python test.i ; gcc -I/usr/include/python2.5 -shared -fPIC -o _test.so test_wrap.c -lpython2.5 `pkg-config --libs gtkglext-1.0` 
$ python -c 'import test; test.test()' 
Test. 
Segmentation fault 
$ python -c 'import gtk; import test; test.test()' 
Test. 
+0

그게 실제로 고쳐 보이지만 왜 설명 할 수 있습니까? 나는 어떤 GTK 함수도 호출하지 않는다. 이것은 나에게 의미가 없다. – Steve

+0

'import gtk'는 일부 init 함수를 호출합니다. – abbot

+0

분명히 GTK가 아니라면 왜 GTK 초기화 함수를 호출해야합니까? 라이브러리가 단순히 연결될 때 일부 코드가 자동으로 호출됩니까? – Steve

관련 문제