c/c++语言开发共享用C头文件编译Cython错误

所以我试图用Cython包装一些C代码。 我阅读了阅读应用Cython的教程来做这个( 1,2 ),但这些教程没有说明如何编译代码一旦你用Cython包装它,所以我有一个错误说它找不到我的C码。

首先,我的cython脚本(“calcRMSD.pyx”):

import numpy as np cimport numpy as np cdef extern from "rsmd.h": double rmsd(int n, double* x, double* y) #rest of the code ommited 

我试图包装的C代码(“rmsd.h”):

 #include  #include  #include  #include  extern "C" { // svd from lapack void dgesvd_(char*,char*,int*,int*,double*,int*,double*,double*,int*,double*, int*,double*,int*,int*); } double rmsd(int n, double* x, double* y) { //code omitted } 

Setup.py

 from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext from Cython.Build import cythonize import numpy as np setup( ext_modules = cythonize([Extension("calcRMSD", sources = ["calcRMSD.pyx"], include_dirs = [np.get_include()], libraries = ["dgesvd"] #extra_compile_args = ["-I."], #extra_link_args = ["-L./usr/lib/liblapack.dylib"] )]) ) 

我的错误:

 calcRMSD.c:269:10: fatal error: 'rsmd.h' file not found #include "rsmd.h" 

我读了这个堆栈溢出线程使用Cython将Python链接到共享库

但是跟随它会给我带来不同的错误。 如果我尝试将rmsd.h放在源代码中,它表示它不识别文件类型。

如何将自定义C(它本身需要特殊的链接选项进行编译)与Cython链接?

这看起来有点有希望,但我不知道如何使用它。

请帮忙!

    首先,它必须找到包含文件rsmd.h 您需要将可以找到此标头的路径添加到include_dirs参数中。 有关丢失文件的错误应该消失。

    然后,您还需要包含从编译C代码中获得的库。 如果是librsmd.a ,则将'rsmd'添加到libraries参数中。 此外,您可能需要library_dirs参数,该参数包含可以找到该库的路径。

      以上就是c/c++开发分享用C头文件编译Cython错误相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/544772.html

      (0)
      上一篇 2021年1月9日
      下一篇 2021年1月9日

      精彩推荐