我有一个使用 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:
同时,如果我返回到我的大型程序,并将 gfortran 替换为 g++ 或 gcc,我也会收到大量链接错误,首先是:
Undefined symbols for architecture i386:
"__gfortran_compare_string", referenced from:
最佳答案
我现在将 g++ 与 -lgfortran 开关链接起来,这样我就可以使用 -std=c++0x 并且不会留下未定义的 c++ 或 fortran 符号。
关于c++ - 将 -std=c++0x 与 gfortran 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19804111/