У меня большой проект.
В 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
чтобы все это компилировалось?
#include <boost/filesystem.hpp>
.....
CHECK( boost::filesystem::exists(*i), std::string("file ").append(*i).append(" does not exist").c_str() );
.....
Я решил проблему, добавив в N.cpp:
#ifndef BOOST_ALL_DYN_LINK
# define BOOST_ALL_DYN_LINK
#endif
#include <boost/filesystem.hpp>
Если вы хотите использовать boost::filesystem
Вы должны включить файл заголовка (прямо или косвенно через другие включения).
Первые три ошибки являются ошибками компоновщика. Некоторые части Boost предназначены только для заголовков, т. Е. Вам не нужно компилировать Boost, когда вы хотите их использовать. К сожалению, файловая система не входит в их число. Это означает, что вы должны скомпилировать Boost, как описано Вот. После этого вы должны сообщить своему компоновщику, где он может найти только что созданные вами двоичные файлы, и он должен хорошо скомпилироваться (если вы не делали никаких других ошибок ;-)).