2015-01-13 2 views
2

현재 프로젝트에 필요한 Python 서버 코드에서이 메소드를 사용하기 위해 Swig에서 서버 코드, 디코 드 및 구문 분석 메소드의 래핑 작업을하고 있습니다.Swig C to Python ImportError : undefined symbol

아래의 메서드를 Swig에서 래핑하고 ImportError 오류를 계속 가져 오려고합니다. ./_rmsgrcv.so : undefined symbol : TCPMsgRecv. tcpmsg.i에 위치한 방법 TCPMsgRecv이 변수를 생성하는 RMsgRcvParseData 걸쳐 여러 번 호출

%module rmsgrcv 

%include "rtypes.i" 
%include "rmsg.i" 
%include "tcpmsg.i" 

%{ 
    #include "rmsgrcv.h" 
%} 

typedef unsigned int size_t; 

char RMsgRcvParseData(int sock,struct RMsgBlock *blk, 
      unsigned char **store); 

rmsgrcv.i *이 BLK 및 서명 숯불 ** 매장 RMsgBlock.

여기에 내가 잘못 무엇인지 알아낼 수 있었다 위에 내가 코드를 주석에

swig -python rmsgrcv.i 
$ gcc -O2 -fPIC -c rmsgrcv.c 
$ gcc -O2 -fPIC -c rmsgrcv_wrap.c -I/usr/include/python2.7/ 
$ gcc -shared rmsgrcv.o rmsgrcv_wrap.o -o _rmsgrcv.so 
+0

'함수? –

답변

1

감사를 컴파일 현재의 방법입니다.

코드가 잘못 컴파일 된 것으로 나타났습니다. 여기

이 인스턴스에서, 컴파일 (개별적으로 각 라인을 실행)하는 올바른 방법이다 : 당신은`rmsgrcv` 파이썬 확장 당신이`TCPMsgRecv을 포함하는 .so 파일 링크 않았다 내장

swig -python rmsgrcv.i 

gcc -O2 -fPIC -c rmsgrcv.c 

gcc -O2 -fPIC -c tcpmsg.c 

gcc -O2 -fPIC -c rmsgrcv_wrap.c -I/usr/include/python2.7/ 

gcc -shared rmsgrcv.o rmsgrcv_wrap.o tcpmsg.o -o _rmsgrcv.so