python - Cython 包含 catkin_pkg 设置错误
问题描述
我在setup.py中使用以下代码来制作c++ 类的 python 包装器:
## ! DO NOT MANUALLY INVOKE THIS setup.py, USE CATKIN INSTEAD
from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
setup_args = generate_distutils_setup(
packages=['hw_interface_pkg'],
package_dir={'': 'src'},
requires=['std_msgs', 'rospy'],
)
setup(**setup_args)
我得到的错误是:
/src/cython/hw_interface.c:482:
/include/remote_hw.h:6:10: fatal error: array: No such file or directory
#include <array>
^~~~~~~
这是标题中的第一个包含。在这个线程、这个线程和这个线程之后,主要解决方案似乎是language="c++"
在参数中添加。但是,这并没有解决我的问题,并且上面的代码也与那些线程中使用的代码有很大不同。(它使用“generate_distutils_setup”而不是“cythonize”或“Extension”)。
除了标准的 c++ 包括 like 之外#include <array>
,还有其他一些我不确定安装程序是否会找到它们。有人可以为此提出一个可能的解决方案吗?这个问题实际上是否源于 CMakelists.txt 详细信息?
解决方案
解决方案是在子 CMakeLists.txt 中添加如下所示的“set_source_files_properties”。
...
set_source_files_properties(hw_interface.pyx PROPERTIES CYTHON_IS_CXX TRUE)
cython_add_module(hw_interface hw_interface.pyx ../fibonacci.cpp)
...
推荐阅读
- r - 使用 dplyr 和 purrr 从嵌套的心理列表中提取元素时遇到问题
- sql-server - 无法从 Microsoft Azure Databricks 笔记本中加载 MS SQL 数据库中的数据
- spring-data - 如何使用 Spring Data 将原始 GeoJson MultiPolygon 存储到 MongoDB
- python - 正则表达式仅在函数上方获取一个 c 样式的多行注释
- python - 逐行迭代熊猫并以python方式修改特定的“单元格”
- python - PyTorch GPU 内存不足
- ruby-on-rails - Rails:使用 let 创建变量时外键约束失败!在 RSpec 测试中
- sql - WITH CTE 和大型 UNION 查询的替代方法
- javascript - JavaScript 问题:无法理解为什么我的代码不起作用
- c# - Unity 物体碰撞时什么都不会发生