다음과 같은 문제가 있습니다.swig 생성 코드가 잘못된 파이썬 설치로 연결됩니다.
저는 C 코드를 감싸기 위해 swig를 사용하여 파이썬 모듈을 만들고 있습니다. MacPorts를 사용하여 python, gcc (45)를 설치했습니다.
두 파일 :
테스트 테스트 :
%module test
double sum(double a, double b);
TEST.C :
double sum(double a, double b){return a+b;}
내가 실행
다음 문제를 재현 최소한의 설정이다$ swig -python -I. test.i
$ gcc -fPIC -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c test_wrap.c
$ gcc -c -o test.o test.c
$ gcc -shared -I/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -lpython -dynamiclib -fPIC -o _test.so test.o test_wrap.o
파이썬 (MacPorts 1 : /opt/local/bin/python2.7)을 실행하고 import test
을 통해 모듈을 가져 오려고하면 위와 똑같은 문제가 발생하여 코드가 충돌합니다. otool와 파일 _test.so 검사
는 다음을 산출 :
$ otool -L _test.so
_test.so:
_test.so (compatibility version 0.0.0, current version 0.0.0)
/System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.2)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1669.0.0)
/opt/local/lib/libgcc/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
나는 줄 #include <Python.h>
test.py 꿀꺽 꿀꺽 생성 된 파일에 포함되어 있음을 발견했다. 그러나 Python.h/System/Library/...와/opt/local /에 있습니다 ... 내 실수는 여기서 실수가 일어나고 있다는 것입니다. 하지만 컴파일러/링커가 올바른 것을 가리킬 수있는 방법은 무엇입니까?
도움을 주셔서 감사합니다. 토마스
나는'-I/opt/local/Library ... -lpython'대신에'-F/opt/local/Library/Frameworks/-framework python'을 사용했다. – Thomasillo