2012-04-18 3 views
2

일부 C++ 프로젝트에 TR1을 사용하려고합니다. 불행히도 나는 오류가 발생하고 왜 제대로 어떻게해야하는지 이해하지 못한다! gcc 4.4.5를 사용하여 Linux에서 작업하고 있습니다.TR1이 gcc와 Cmake와 함께 작동하지 않습니다.

내가 TR1 지원을 설정 CMakeLists.txt에서
#include <tr1/normal_distribution> 

(-std = C + +0)

:

나는 내가해야 할 TR1 파일을 통해 가져

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

오류를 얻을

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 –

+0

헤더는'tr1/random'입니다. 또한 gcc가있는 TR1의 경우 C++ 0x 지원이 필요하지 않습니다. –

답변

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를 사용합니다.

난이도가 11 인 경우 : c++0x으로 컴파일 한 다음 #include <random>으로 컴파일하고 std::normal_distribution을 사용하십시오.

+0

Apparantly 나는 그것을 필요로한다. 일치하지 않으면 다음 오류가 표시됩니다. /usr/include/c++/4.4/c++0x_warning.h:31:2 : 오류 : #error이 파일을 사용하려면 향후 ISO C++에 대한 컴파일러 및 라이브러리 지원이 필요합니다. 표준, C++ 0x. 이 지원은 현재 실험적이므로 -std = C++ 0x 또는 -std = gnu ++ 0x 컴파일러 옵션으로 활성화해야합니다. –

+0

나는 정상적인 난수를 사용하지 않지만, 이상한 비정상적인 –

+0

@MichaelGg를 사용한다. (C++ 11) 또는 을 포함하고 있습니까? – juanchopanza

1

에 대한

덕분에 많이 나는 그것의 #include <random>을 믿습니다. 어쨌든, 그것을 확인하십시오.

0

시도는 CMakeLists.txt에 CXX 다음 플래그를 추가합니다 :

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

-std=c++0x

관련 문제