使用OpenMp与ctypes链接

我有一个使用openmp的c99函数,它按预期工作。 我也写了一个使用ctypespython接口,导致了这个问题。 Ctypes / python找不到openmp的库。 这是错误消息:

File "foo.py", line 2, in <module> foobar=cdll.LoadLibrary("./libfoo.so") File "/usr/lib/python2.6/ctypes/__init__.py", line 431, in LoadLibrary return self._dlltype(name) File "/usr/lib/python2.6/ctypes/__init__.py", line 353, in __init__ self._handle = _dlopen(self._name, mode) OSError: ./libfoo.so: undefined symbol: GOMP_parallel_end 

我使用这些cmds:

 gcc -fPIC -std=c99 -lm -Wall -fopenmp -pedantic -c foo.c gcc -shared -o libfoo.so foo.o python foo.py 

我已经在Google上search并find了一个“解决scheme”,但我不明白这是什么意思:

我想我应该在构造函数上设置restype到ctypes.c_void_p。
而且我应该在被调用的argtypes中设置相应的types
函数到ctypes.c_void_p。 这会导致必要的转换吗?
发生? 我想确认这是正确的方法
处理这种情况。

解决scheme意味着什么?或者您是否以其他方式了解?

[更新]

所以这里是在IulianŞerbănoiu帮助下的正确的cmd选项:

 gcc -fPIC -std=c99 -lm -Wall -fopenmp -pedantic -c foo.c gcc -shared -lgomp -lrt -o libfoo.so foo.o python foo.py 

尝试添加-lgomp选项以便与openmp库链接。 从这里 。