Я реализую программу, использующую библиотеки Boost. Программа скомпилирована на разных платформах. У меня нет проблем с Mac OS.Странное поведение при использовании boost на разных версиях платформы/gcc
Тот же код генерирует ошибки компилятора на разных платформах. Компиляторы разные: на Mac OS я использую gcc 4.2, на Linux gcc 4.4, ...
Однако есть некоторые ошибки, которые очень трудно объяснить.
Я использую Boost 1.5.3. Например, у меня есть это странное сообщение:
In member function 'std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > >* FolderReader::get_filenames()':
/home/u/projects/prj/src/batch/folderreader.cpp:119: error:
'canonical' is not a member of 'bf'
где бф определяется как namespace bf = boost::filesystem;
и canonical()
вызывается таким образом: bf::canonical(pp).string()
с pp
набор:
for(bf::directory_iterator it = bf::directory_iterator(p); it != bf::directory_iterator(); it++) {
bf::path pp = *it;
...
Тем не менее, следует работают в соответствии с API здесь: http://www.boost.org/doc/libs/1_53_0/libs/filesystem/doc/reference.html#canonical
ПРИМЕЧАНИЕ: Некоторые другие ошибки, которые я только что исправил, относятся к этому типу. Я должен был написать:
obj.method1().method2()
в
class2 &obj2 = obj.method1();
obj2.method2();
в противном случае я бы получить сообщение об ошибке.
Итак ... что случилось с моим вызовом boost::filesystem::canonical(...)
?
Спасибо, проблема была вызвана другой версией, выбранной CMake в сотрудничестве с ОС. –