Swig C to Python ImportError: undefined symbol
Swig C to Python ImportError: undefined symbol
我目前正致力于在 Swig 中包装部分服务器代码、解码和解析方法,以便在项目所需的 python 服务器代码中使用这些方法。
我试图在 Swig 中包装下面的方法并不断收到错误 ImportError: ./_rmsgrcv.so: undefined symbol: TCPMsgRecv。
rmsgrcv.i
%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);
位于 tcpmsg.i 中的方法 TCPMsgRecv 在整个 RMsgRcvParseData 中被多次调用以创建变量 RMsgBlock *blk 和 unsigned char **store。
这是我目前编译代码的方式
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
多亏了上面的评论,我才能够找出问题所在。
原来我编译的代码不正确。
下面是正确的编译方法,在本例中(运行 每行单独):
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
我目前正致力于在 Swig 中包装部分服务器代码、解码和解析方法,以便在项目所需的 python 服务器代码中使用这些方法。
我试图在 Swig 中包装下面的方法并不断收到错误 ImportError: ./_rmsgrcv.so: undefined symbol: TCPMsgRecv。
rmsgrcv.i
%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);
位于 tcpmsg.i 中的方法 TCPMsgRecv 在整个 RMsgRcvParseData 中被多次调用以创建变量 RMsgBlock *blk 和 unsigned char **store。
这是我目前编译代码的方式
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
多亏了上面的评论,我才能够找出问题所在。
原来我编译的代码不正确。
下面是正确的编译方法,在本例中(运行 每行单独):
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