在cppyy中使用特征库

2024-10-02 12:37:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经成功地使用了cppyy来处理我正在处理的C++项目的自动Python绑定。我最近包括了Eigen库,但在与cppyy一起使用时遇到了问题。有没有人有做这件事的经验,或者知道我应该怎么做?在

我有以下回购结构(仅显示相关部分):

.
├── CMakeLists.txt
├── build
├── external
   ── eigen
├── include
   ── all .hpp files
├── src
   ── all .cpp files
├── python
   ── qmc.py

这里的external/eigenEigen GitHub repo的副本。qmc.py文件是cppyy魔术发生的地方,它看起来是这样的(在尝试添加Eigen之前,它可以正常工作)

^{pr2}$

构建部分可以工作,但是只要我尝试加载任何使用Eigen的头,就会得到一个错误。我已经尝试了所有我能想到的方法(包括手动一个接一个地包含所需的头文件,将整个库复制到build dir中等等),但是不管我做了什么,都会弹出相同类型的错误。有点像

In file included from 
/path/to/repo/projects/include/myheader.hpp:3:10: fatal error: 'Eigen/Dense' file not found
#include <Eigen/Dense>
         ^~~~~~~~~~~~~

如果您能在这里改变什么,我们将不胜感激!在

编辑:要清楚地说,构建步骤工作得很好,即代码按其应有的方式编译、链接和运行。用cppyy加载库也可以。问题是cppyy还需要包括头文件。再一次,这对我自己的标题有效,但它无法找到本征标题。。。在


Tags: pybuildinclude头文件错误repofilesall
1条回答
网友
1楼 · 发布于 2024-10-02 12:37:48

调用help()时,有:

>>> import cppyy
>>> help(cppyy)
    """
    add_include_path(path)
        Add a path to the include paths available to Cling.
    """
>>>

因此,由于eigen_dir是到特征值的路径,这应该是问题:

^{pr2}$

不过,还有更好的方法,因为您已经在使用cmake了。参见本回购协议: https://github.com/jclay/cppyy-knearestneighbors-example。 有了它,自动加载应该可以工作了。一、 不需要在自己的代码中处理库和头。在

相关问题 更多 >

    热门问题