Включая заголовок файловой системы Boost

У меня большой проект.

В N.cpp Мне нужно использовать boost::filesystem::exists(path) проверить правильность пути.

Для этого я включаю <boost/filesystem.hpp>

Я получаю следующую ошибку:

Error    2    error LNK2005: "public: enum boost::filesystem::file_type __cdecl boost::filesystem::file_status::type(void)const " (?type@file_status@filesystem@boost@@QEBA?AW4file_type@23@XZ) already defined in N.obj    D:\MProject\DA\boost_filesystem-vc100-mt-gd-1_53.lib(boost_filesystem-vc100-mt-gd-1_53.dll)    DA

Error    1    error LNK2005: "public: __cdecl boost::filesystem::path::~path(void)" (??1path@filesystem@boost@@QEAA@XZ) already defined in N.obj    D:\MProject\DAboost_filesystem-vc100-mt-gd-1_53.lib(boost_filesystem-vc100-mt-gd-1_53.dll)    DA

Error    3    error LNK1104: cannot open file 'libboost_filesystem-vc100-mt-gd-1_53.lib'    D:\MProject\DA\LINK    DA

Если я не включаю заголовочный файл, я получаю:

Error    2    error C3861: 'exists': identifier not found    D:\MProject\DA\ThirdParty\N.cpp    108    1    DA
Error    1    error C2653: 'boost' : is not a class or namespace name    D:\MProject\DA\ThirdParty\N.cpp    108    1    DA

Как правильно использовать boost::filesystem::exists чтобы все это компилировалось?

N.cpp

#include <boost/filesystem.hpp>
.....
CHECK( boost::filesystem::exists(*i), std::string("file ").append(*i).append(" does not exist").c_str() );

.....

0

Решение

Я решил проблему, добавив в N.cpp:

#ifndef BOOST_ALL_DYN_LINK
#   define BOOST_ALL_DYN_LINK
#endif
#include <boost/filesystem.hpp>
4

Другие решения

Если вы хотите использовать boost::filesystem Вы должны включить файл заголовка (прямо или косвенно через другие включения).

Первые три ошибки являются ошибками компоновщика. Некоторые части Boost предназначены только для заголовков, т. Е. Вам не нужно компилировать Boost, когда вы хотите их использовать. К сожалению, файловая система не входит в их число. Это означает, что вы должны скомпилировать Boost, как описано Вот. После этого вы должны сообщить своему компоновщику, где он может найти только что созданные вами двоичные файлы, и он должен хорошо скомпилироваться (если вы не делали никаких других ошибок ;-)).

3

По вопросам рекламы [email protected]