0

以下代码打印进程当前工作路径。使用 boost 1.52,在 Visual Studio 2010 中工作。

#include <iostream>
#include <string>
#include "boost/algorithm/string.hpp"
#include "boost/filesystem/path.hpp"
#include "boost/filesystem/operations.hpp"
#include "boost/format.hpp"

int main(int argc, const char* argv[]) {
        std::string p = boost::filesystem::initial_path<boost::filesystem::path>().string();
        std::cout << p;
        return 0;
}

但是在linux上,编译失败时,给出错误信息:

g++ -g -I/root/boost_1_52_0 -c main.cpp -o main.o
main.cpp: In function ‘int main(int, const char**)’:
main.cpp:9: error: expected primary-expression before ‘&gt;’ token
main.cpp:9: error: expected primary-expression before ‘)’ token
make: *** [main.o] Error 1

我在stackoverflow中搜索了同样错误的帖子,但不知道如何修复它。任何帮助表示赞赏。

g++ 版本:

Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --disable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-52)

-------------------- 问题已修复 ------------------------

我解决问题。原因是,我更改了boost头文件目录名,同时忘记更改makefile中的包含路径。

后来,我遇到了错误:

boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()

这是由于我从其他地方复制编译的 boost 库引起的,出于某种原因,它与我的 linux 不兼容。我重新编译了boost,最后一切正常。

感谢 Doctorlove、Igor R、levengli 和 cv_and_he 的帮助!

4

0 回答 0