Cython,C和gsl

所以我设置了一个c类,比如class.cpp,class.h. class.cpp使用gsl中的一些函数(它有#include< gsl / gsl_blas.h>)
我没有问题将此链接到另一个c文件main.cpp,我可以编译它

g++ -o main main.o class.o  -I/home/gsl/include -lm -L/home/gsl/lib -lgsl -lgslcblas

另外,如果不在class.cpp中包含gsl库,我已经设法创建了一个在class.cpp中使用我的类的cython文件,它可以工作.

但是,当我尝试将这两者结合起来时(即在cython中使用c类,c类使用gsl函数),我不知道该怎么做.我想我必须包括

I/home/gsl/include -lm -L/home/gsl/lib -lgsl -lgslcblas

安装文件中的某个地方,但我不知道在哪里或如何.我的setup.py看起来像

from distutils.core import setup
from Cython.Build import cythonize

import os

os.environ["CC"] = "g++"
os.environ["CXX"] = "g++"

setup(
    name = "cy",
    ext_modules = cythonize('cy.pyx'),
)

我有

# distutils: language = c++
# distutils: sources = class.cpp

在我的.pyx文件的开头.

谢谢你的帮助!

解决方法:

我建议你在扩展中使用extra_compile_args选项.
我已经写了一些答案,幸运地使用了GSL依赖here.

根据您的需求进行自定义,但它应该以这种方式工作.

希望这可以帮助……

上一篇:python – 将GSL(或其他库)静态链接到共享库


下一篇:C++科学计算库GSL及其配置