我使用sudo apt-get install libboost-all-dev在Ubuntu 14.04上安装了boost。
如果我想用这个命令编译给定的程序
g++ -o prog givenProgram.cpp -I/usr/include/boost -L/usr/lib/x86_64-linux-gnu -lboost_serialization -lboost_random
,我收到了很多错误。
In file included from ./include/pso.h:15:0,
from givenProgram.cpp:1:
./include/particle.h:29:17: error: ‘boost’ is not a namespace-name
using namespace boost;
^
./include/particle.h:29:22: error: expected namespace-name before ‘;’ token
using namespace boost;
^
./include/particle.h:58:11: error: ‘shared_ptr’ does not name a type
shared_ptr<CostFunction> fit_func; // pointer to a cost function
^
./include/particle.h:59:11: error: ‘shared_ptr’ does not name a type
shared_ptr<RNG> rng; // pointer to a random number generator
^
./include/particle.h:118:62: error: ‘shared_ptr’ does not name a type
Particle ( int, CostFunction*, const shared_ptr<RNG> & );
^
./include/particle.h:118:62: error: ISO C++ forbids declaration of ‘parameter’ with no type [-fpermissive]
./include/particle.h:118:72: error: expected ‘,’ or ‘...’ before ‘<’ token
Particle ( int, CostFunction*, const shared_ptr<RNG> & );
^
./include/particle.h:119:47: error: ‘shared_ptr’ does not name a type
Particle ( int, const shared_ptr<CostFunction> &, const shared_ptr<RNG> & );
^
./include/particle.h:119:47: error: ISO C++ forbids declaration of ‘parameter’ with no type [-fpermissive]
./include/particle.h:119:57: error: expected ‘,’ or ‘...’ before ‘<’ token
Particle ( int, const shared_ptr<CostFunction> &, const shared_ptr<RNG> & );
^
答案 0 :(得分:3)
您传递给g++
的命令行选项与发出的诊断无关,因为您指定了查找标题的位置以及它应链接到的对象;你没有明确说明应该在哪里找到 boost :: shared_ptr 的定义。
问题是你在没有正确定义所述命名空间的情况下尝试使用 namespace boost ,并且很可能你在 givenProgram.cpp中没有相关的#include
s 以便编译器知道您引用的名称。
确保您在 之前 中的#include <boost/shared_ptr.hpp>
,更具体地说:之前> strong>您尝试使用 boost :: shared_ptr 。
这种有根据的猜测的原因是你没有发布有关编译器无法找到相关#include
的任何错误,它会抱怨,因为它无法找到使用过的名称。