|
Boost Users : |
Subject: [Boost-users] [Filesystem] Symbol not found: boost::filesystem2::detail::status_api
From: Nicolas Chaumont (nicolas.chaumont_at_[hidden])
Date: 2011-02-22 22:45:58
Hello and thank you for reign my post,
When I want to compile the program:
#include "boost/filesystem.hpp"
int main(int argc, char** argv)
{
boost::filesystem::path path;
boost::filesystem::exists(path); //<=This is the line that causes the
error
return 0;
}
I get the following error:
"boost::filesystem2::detail::status_api(std::basic_string<char,
std::char_traits
<char>, std::allocator<char> > const&, boost::system::error_code&)",
referenced from:
boost::enable_if<boost::filesystem2::is_basic_path<boost::filesystem2::basic_pat
h<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
boost::filesystem2::path_traits> >, bool>::type boost::filesystem2::exists<
boost::filesystem2::basic_path<std::basic_string<char,
std::char_traits<char>,
std::allocator<char> >, boost::filesystem2::path_traits> >(
boost::filesystem2::basic_path<std::basic_string<char,
std::char_traits<char>,
std::allocator<char> >, boost::filesystem2::path_traits> const&)in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
I'm using XCode 3.2.4, Darwin GCC 4.2 with the Mac OSX 10.6 SDK. The
program
links against the libboost_system.a and libboost_filesystem.a libraries
from
Boost 1.45, both compiled with the same compiler.
Boost was compiled in the most straight forward way, i.e. from the boost
root
directory, I invoke the only two commands:
./bootstrap.sh
make
Note that I haven't installed the library in /usr/local.
Since the example compiles fine with the problematic line commented out,
I assume the include path is correct, and that the linker found
libboost_system.a (in stage/lib). I also made sure there are no other
versions
of boost present on my computer to eliminate the possibility of a
header/library
version mismatch.
Also, I've tried to compile with different architectures, both in debug and
release mode. I couldn't remove this error.
I looked for the missing symbol in both libboost_system.a and
libboost_filesystem.a (nm -m <library name> | c++filt), and the filesystem2
namespace doesn't exist.
My understanding is that the boost::filesystem2 namespace was never
generated
when I compiled the libraries, but for some reason is generated when I
compile
my little program. So I suppose there might be a definition that triggers
or
prevents this namespace from being created.
Anyone has an idea about what should I do to remove my error?
Thank you in advance,
Regards,
Nicolas
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net