YAML::LoadFile(std::string const&) 找不到文件 [ROS 中的 yaml-cpp]
YAML::LoadFile(std::string const&) does not find file [yaml-cpp in ROS]
我正试图在ROS(动能)/c++代码中使用yaml文件中的数据,因此yaml-cpp对我来说似乎是一个不错的选择。我的代码不会产生错误,但无法正常工作:
YAML::LoadFile
函数似乎找不到我的文件,因为以下几行进入异常:
YAML::Node yamlnode_;
try{
yamlnode_= YAML::LoadFile("../yaml_file.yaml");
}
catch(std::exception &e){
ROS_ERROR("Failed to load yaml file");
}
通过包括yaml-cpp
#include <yaml-cpp/yaml.h>
似乎是工作的,因为YAML::函数在之后被识别。
路径../yaml_file.yaml
设置正确,我也通过在程序中检查过
#include "../yaml_file.yaml"
这会产生解析错误(正如预期的那样),向我表明找到了正确的文件(但显然无法包括在内)。
yaml_file.yaml在多个.xaro文件中成功使用。
请记住,我对ROS和yaml-cpp有些陌生;我期待着看到你的问题和答案
使用#include "../yaml_file.yaml"
包含YAML文件会抛出错误,这只表明该文件位于当前目录或编译器使用的包含路径中某个目录的父目录中。
当使用"../yaml_file.yaml"
进行加载时,文件需要在执行时位于当前目录的父目录中。这通常是启动程序的目录的父目录(不必是程序所在的目录)。但是,如果您的程序更改了当前目录(使用chdir()
),并且您不知道它可能"在"哪里,您可以只想打印getcwd()
的结果来获得您的方位。
对于getcwd()
,应该使用#include <unistd.h>
,它需要一个指向足够大的字符缓冲区的指针来容纳路径,并将缓冲区可以容纳的(size_t
)作为第二个参数。(对于某些实现,可以传递NULL,并分配足够大的缓冲区,在这种情况下使用返回值)
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 如何使用 ROS 从 yaml 文件中读取带有元组的数组?
- 将 JPG 编码数组从 ROS sensor_msgs/压缩图像保存到 roscpp 中的文件
- ROS C++项目"include"文件夹?
- 如何在 cpp 文件 ROS 中查找标头路径
- YAML::LoadFile(std::string const&) 找不到文件 [ROS 中的 yaml-cpp]
- ROS启动文件以设置变量值
- 订阅者和发布者在 ROS 中的一个文件中
- ROS在linux下使用C++的boost::文件系统库链接错误
- 我想从文本文件中发布ROS主题浮动数
- Ros动态配置文件
- 如何从ros启动文件中获取参数并在Qt中使用
- ROS节点无法通过启动文件执行工作