2012-04-18 101 views
2

我正在尝试将TR1用于某些C++项目。不幸的是,我得到一个错误,不明白为什么或如何正确地做到这一点! 我正在使用gcc 4.4.5在Linux下工作。TR1不能使用gcc和Cmake

我得到的错误

myfile.cpp:21:35: error: tr1/normal_distribution: No such file or directory  

的TR1文件,我需要通过进口:

#include <tr1/normal_distribution> 

中的CMakeLists.txt我打开TR1支持(-std =的C++ 0x)

SET (CMAKE_CXX_FLAGS "-Wall -std=c++0x -DNDEBUG -O3 -march=nocona -msse4.2") 

任何想法我做错了什么?

非常感谢您的帮助

+0

http://stackoverflow.com/questions/1118482/c-tr1-how-to -use-the-normal-distribution – 2012-04-18 08:02:59

+0

头部是'tr1/random'。对于使用gcc的TR1,您也不需要C++ 0x支持。 – 2012-04-18 08:06:50

回答

6

标记-std=c++0x可让您访问在您的gcc版本中实现的任何C++ 11功能。对于随机数字分布,C++ 11的标题为random。使用C++ 11时,不需要tr1名称空间。

tr1随机版本包含tr1/random以及所有在std::tr1命名空间下的东西。要访问这个,你不需要c++0x标志。

要明确:

对于TR1随机数字:#include <tr1/random>和使用std::tr1::normal_distribution

对于C++ 11个随机数字:编译标志为c++0x,然后#include <random>并使用std::normal_distribution

+0

我需要它。如果我没有,我得到以下错误: /usr/include/c++/4.4/c++0x_warning.h:31:2:error:#error该文件需要编译器和库支持即将到来的ISO C++标准,C++ 0x。此支持目前是实验性的,必须使用-std = C++ 0x或-std = gnu ++ 0x编译器选项启用。 – 2012-04-18 08:19:47

+0

我不使用正常的随机数,但是一个normal_distribution – 2012-04-18 08:21:23

+0

@MichaelGg很奇怪。你是否包括(C++ 11)或? – juanchopanza 2012-04-18 08:21:54

1

我相信它的#include <random>。无论如何,检查一下。

0

尝试添加以下标志CXX上的CMakeLists.txt:

set (CMAKE_CXX_FLAGS "-stdlib=libstdc++") 

-std=c++0x是没有必要的