我有一个使用C,C ++和Fortran的大型程序。我总是发现最简单的方法是使用“gfortran”前端正确链接,即使我的主要是C. gfortran知道很多需要链接的Fortran特殊内容。
但是,现在我需要包含unordered_map
,我的编译器(Mac OS X 10.7.5上的gcc 4.4.1)似乎需要-std=c++0x
选项。我通过仅使用C ++编译一个小测试程序来发现并验证了它。
但是如果我在gfortran中使用-std=c++0x
选项,则会产生大量的链接错误,从以下开始:
Undefined symbols for architecture i386:
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::data() const", referenced from:
同时,如果我回到我的大型程序,并用g ++或gcc替换gfortran,我也会收到大量的链接错误,从以下开始:
Undefined symbols for architecture i386:
"__gfortran_compare_string", referenced from:
答案 0 :(得分:2)
我现在使用g ++和-lgfortran开关进行链接,这让我使用-std = c ++ 0x并且不会给我留下未定义的c ++或fortran符号。