gpt4 book ai didi

python - Swig C 到 Python ImportError : undefined symbol

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:19:53 27 4
gpt4 key购买 nike

我目前正致力于在 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

关于python - Swig C 到 Python ImportError : undefined symbol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929234/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com