首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含boost::文件系统时出现的ctime错误

包含boost::文件系统时出现的ctime错误
EN

Stack Overflow用户
提问于 2019-07-10 09:34:16
回答 1查看 305关注 0票数 0

我正在做一个小项目。基本的部分是,一个视频应该被捕获,保存和移动到另一个文件夹。对于视频部分,我使用的是FFmpeg,这没有任何问题。为了安全起见,我正在使用tinyXML2。对于复制和移动视频文件,我喜欢使用助推。目前,我正在windows上工作,并且正在使用CMake。

问题是,在我包含"boost/filesystem“的那一刻,编译器就开始失败了。在使用了google并分析了错误消息之后,我认为头、<ctime><time>存在问题。使用<ctime>的文件是由tinyxml2传递的xmltest

但老实说,我非常不知道这种情况是如何发生的,也不知道为什么会发生。

我已经尝试切换包含的顺序,如前面提到的这里。我试图排除使用ctime的文件,但这是不可能的。我试着解决这个问题,所以我不需要使用Boost,但是由于平台无关,这是很困难的。

日志文件:

代码语言:javascript
复制
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(19): error C2039: 'clock_t': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(19): error C2873: 'clock_t': symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(23): error C2039: 'asctime': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(23): error C2873: 'asctime': symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(24): error C2039: 'clock': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(24): error C2873: 'clock': symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(25): error C2039: 'ctime': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(25): error C2873: 'ctime': symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(26): error C2039: 'difftime': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(26): error C2873: 'difftime': symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(27): error C2039: 'gmtime': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(27): error C2873: 'gmtime': symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(28): error C2039: 'localtime': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(28): error C2873: 'localtime': symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(29): error C2039: 'mktime': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(29): error C2873: 'mktime': symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(30): error C2039: 'strftime': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(30): error C2873: 'strftime': symbol cannot be used in a using-declaration
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(31): error C2039: 'time': is not a member of '`global namespace''
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\include\ctime(31): error C2873: 'time': symbol cannot be used in a using-declaration

我包括Boost &tinyxml的方式:

代码语言:javascript
复制
find_package(TinyXML2)
find_package(Boost COMPONENTS filesystem system REQUIRED)

...

add_executable(programm ${project_sources}
    ${project_headers}
    ${TINYXML_INC})

target_link_libraries(programm PUBLIC
    Boost::filesystem
    Boost::system
    ${TinyXML2_LIBRARIES})

target_include_directories(programm PRIVATE
    ${Boost_INCLUDE_DIRS}
    ${Boost_LIBRARY_DIRS}
    ${TinyXML2_INCLUDE_DIR})

target_link_directories(programm PUBLIC
    ${Boost_INCLUDE_DIRS}
    ${Boost_LIBRARY_DIRS}
    ${TinyXML2_INCLUDE_DIR})

Util.h中的Boost包括:

代码语言:javascript
复制
#include <string>
#include <boost/filesystem.hpp>

namespace util {
    bool existens_file(std::string* path);
    int existens_directory(std::string* path);

    bool create_directory(std::string* path);
}

xmltest中使用<ctime>的部分:

代码语言:javascript
复制
#include "tinyxml2.h"
#include <cerrno>
#include <cstdlib>
#include <cstring>
#include <ctime>

...

XMLDocument* doc = new XMLDocument();
clock_t startTime = clock();
doc->LoadFile( argv[1] );
clock_t loadTime = clock();
int errorID = doc->ErrorID();
delete doc; doc = 0;
clock_t deleteTime = clock();

编辑经过一些测试后,我尝试在不同的文件中使用<ctime>,没有的,包括boost。在这种情况下,我也会收到上面提到的同样的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-10 18:41:55

因此,我修复了这个问题,在ffmpeg-library是名为time.hTime.h的文件。错误在于不小心链接了包含此文件的目录。

我不知道为什么,但是对于boost::filesystem的包含,这是触发的,并且使用了ffmpeg的时间文件。

我通过删除ffmpeg的链接目录解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56967732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档