【问题标题】:tr1/normal_distribution: No such file or directorytr1/normal_distribution:没有这样的文件或目录
【发布时间】:2012-04-18 08:00:11
【问题描述】:

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

我得到了错误

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")  

知道我做错了什么吗?

【问题讨论】:

标签: c++ gcc cmake tr1


【解决方案1】:

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

随机的tr1 版本包含在tr1/random 中,所有内容都在std::tr1 命名空间下。要访问它,您不需要 c++0x 标志。

要明确:

对于 TR1 随机数:#include &lt;tr1/random&gt; 并使用 std::tr1::normal_distribution

对于 c++11 随机数:使用标志 c++0x 编译,然后使用 #include &lt;random&gt; 并使用 std::normal_distribution

【讨论】:

  • 显然我需要它。如果不这样做,我会收到以下错误:/usr/include/c++/4.4/c++0x_warning.h:31:2: error: #error 此文件需要编译器和库支持即将推出的 ISO C++ 标准, C++0x。此支持目前处于试验阶段,必须使用 -std=c++0x 或 -std=gnu++0x 编译器选项启用。
  • 我不使用普通随机数,而是使用 normal_distribution
  • @MichaelGg 这很奇怪。您是否包括 (c++11) 或
  • @MichaelGg normal_distribution中定义,后者需要C++11支持,前者不需要。
  • #include 但是里面似乎有一些 TR1 的东西,例如:#if defined(_GLIBCXX_INCLUDE_AS_CXX0X) #include #else
【解决方案2】:

我相信它是#include &lt;random&gt;。无论如何,检查一下。

【讨论】:

    【解决方案3】:

    尝试在 CMakeLists.txt 的 cxx 中添加以下标志:

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

    -std=c++0x 不是必需的

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 2016-05-06
      • 2019-03-13
      相关资源
      最近更新 更多