2

我有使用 C、C++ 和 Fortran 的大型程序。我一直发现使用“gfortran”前端最容易正确链接,即使我的主要语言是 C。gfortran 知道很多需要链接的 Fortran 特殊内容。

但是,现在我需要包含unordered_map,而我的编译器(Mac OS X 10.7.5 上的 gcc 4.4.1)似乎需要该-std=c++0x选项。我通过仅用 C++ 编译一个小型测试程序发现并验证了这一点。

但是,如果我将该-std=c++0x选项与 gfortran 一起使用,则会产生大量链接错误,开头为:

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:
4

1 回答 1

2

我现在使用 g++ 与 -lgfortran 开关链接,这让我可以使用 -std=c++0x 并且不会给我留下未定义的 c++ 或 fortran 符号。

于 2013-11-06T22:15:12.927 回答