所以我设置了一个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.
根据您的需求进行自定义,但它应该以这种方式工作.
希望这可以帮助……