C++ Boost - __assert_fail 未在此范围内声明
C++ Boost - __assert_fail was not declared in this scope
目前我正在开发将在 Raspberry Pi 上使用的库 3. 为了遍历目录中的所有文件,我决定使用 boost::filesystem
模块。我准备了这段代码:
#include <boost/foreach.hpp>
#include <boost/filesystem.hpp>
boost::filesystem::path targetDir(some_path);
boost::filesystem::directory_iterator it(targetDir), eod;
BOOST_FOREACH(boost::filesystem::path const& p, std::make_pair(it, eod))
{
if (boost::filesystem::is_regular_file(p))
{
// do smth with file
}
}
Boost 已通过 apt-get install libboost1.62-all-dev
安装。
不幸的是,在 Visual Studio 2017 年编译(在远程 RPi 目标上,g++ 4.9.2)给了我这一堆错误:
__assert_fail was not declared in this scope (path_trails.hpp)
...
__assert_fail was not declared in this scope (path.hpp)
...
__assert_fail was not declared in this scope (shared_ptr.hpp)
我做错了什么?
问题与提升无关。我在上面有 #include <Magick++.h>
行,这会导致这些输出错误。评论完这一行后一切正常,现在我需要找出为什么 Magick++ 导致了这个兼容性问题。
我只是 运行 遇到了同样的问题。
什么是 st运行ge 是我没有在 stretch 或 buster 中看到这个问题,只在 bullseye 中看到。您使用的 imagemagick 版本不是来自 Raspbian 存档吗?
无论如何,我遇到的问题是 Magick++.h 最终将 assert.h 包含在命名空间中,当发生这种情况时,它会破坏任何其他试图使用 assert.h[=10 的代码=]
解决方法是 re-order 您的包含 and/or 添加 assert.h 的显式包含,以便 assert.h 在 Magick++.h
之前被包含
目前我正在开发将在 Raspberry Pi 上使用的库 3. 为了遍历目录中的所有文件,我决定使用 boost::filesystem
模块。我准备了这段代码:
#include <boost/foreach.hpp>
#include <boost/filesystem.hpp>
boost::filesystem::path targetDir(some_path);
boost::filesystem::directory_iterator it(targetDir), eod;
BOOST_FOREACH(boost::filesystem::path const& p, std::make_pair(it, eod))
{
if (boost::filesystem::is_regular_file(p))
{
// do smth with file
}
}
Boost 已通过 apt-get install libboost1.62-all-dev
安装。
不幸的是,在 Visual Studio 2017 年编译(在远程 RPi 目标上,g++ 4.9.2)给了我这一堆错误:
__assert_fail was not declared in this scope (path_trails.hpp)
...
__assert_fail was not declared in this scope (path.hpp)
...
__assert_fail was not declared in this scope (shared_ptr.hpp)
我做错了什么?
问题与提升无关。我在上面有 #include <Magick++.h>
行,这会导致这些输出错误。评论完这一行后一切正常,现在我需要找出为什么 Magick++ 导致了这个兼容性问题。
我只是 运行 遇到了同样的问题。
什么是 st运行ge 是我没有在 stretch 或 buster 中看到这个问题,只在 bullseye 中看到。您使用的 imagemagick 版本不是来自 Raspbian 存档吗?
无论如何,我遇到的问题是 Magick++.h 最终将 assert.h 包含在命名空间中,当发生这种情况时,它会破坏任何其他试图使用 assert.h[=10 的代码=]
解决方法是 re-order 您的包含 and/or 添加 assert.h 的显式包含,以便 assert.h 在 Magick++.h
之前被包含