【发布时间】:2015-01-13 18:43:59
【问题描述】:
我目前正致力于在 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
【问题讨论】:
-
在构建
rmsgrcvPython 扩展时,是否链接了包含TCPMsgRecv函数的.so 文件?