0

这是我的问题:我必须用 python 调用用 C 编写的算法。我用 swig 来做。

所以我有一个 example.i 文件,看起来像这样

%module example
%{
    #include "example.h"
%}
%include "example.h"

我的 example.h 文件非常简单

#ifndef EXAMPLE
#define EXAMPLE

#include <gmp.h>

// function that needs gmp library
void myFunction();

#endif

当我必须编译时,我运行

swig -python example.i
gcc -fpic -std=c99 -c example.c example_wrap.c -I/usr/include/python2.7/    
gcc -shared example.o example_wrap.o -o -lgmp _example.so

到目前为止一切都很好,但是当我尝试在 python 中导入示例时出现错误 ImportError: example.so: undefined symbol: __gmpf_cmp

所以 swig 和 gmp 库之间的链接有问题,但我不知道错误来自哪里。

python -V
2.7.3

swig -version
SWIG Version 2.0.4

Ubuntu 12.04

任何帮助将不胜感激。

提前致谢,

胜利者

4

1 回答 1

2

您似乎对 -lgmp 标志进行了错误排序,使其位于 -o 和库名称之间。如果你这样做可能会更好:

gcc -shared example.o example_wrap.o -lgmp -o _example.so
于 2013-01-24T18:18:30.793 回答