У меня есть большая программа, которая использует C, C ++ и Fortran. Я всегда считал, что проще всего сделать так, чтобы это правильно связывалось с помощью интерфейса gfortran, хотя мой главный — C. gfortran знает о многих специальных вещах Фортрана, которые нужно связать.
Теперь, однако, мне нужно включить unordered_map
, который с моим компилятором (gcc 4.4.1 на Mac OS X 10.7.5), кажется, требует -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:
Между тем, если я возвращаюсь к своей большой программе и заменяю gfortran на g ++ или gcc, я также получаю огромное количество ошибок ссылок, начиная с:
Undefined symbols for architecture i386:
"__gfortran_compare_string", referenced from:
Теперь я связываю с помощью g ++ с ключом -lgfortran, и это позволяет мне использовать -std = c ++ 0x и не оставляет меня с неопределенными символами c ++ или fortran.
Других решений пока нет …