iostream.h, fstream.h не может быть найден - PullRequest
9 голосов
/ 09 февраля 2010

У меня есть 32-битная машина, и я использую Ubuntu 9.10 на ней. У меня последний компилятор gcc. Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть библиотека, разработанная в 2002 году. Код, безусловно, правильный, но когда я пытаюсь его построить, он выдает мне ошибки, такие как iostream.h, найти не удается, error: fstream.h: Нет такого файл или каталог и т. д. Есть много файлов, поэтому я не могу их изменить.

Можно ли решить эти ошибки, если они будут решены? Я установлю gcc 3.0? Если да, то как установить его поверх моего существующего компилятора gcc.

Ответы [ 3 ]

5 голосов
/ 09 февраля 2010

Вы имеете дело со стандартной библиотекой C ++, и вы видели, что она не будет компилироваться стандартным компилятором. Вы всегда можете попробовать быстрое решение, создав, скажем, iostream.h с двумя строками #include <iostream> и using namespace std;, и это может сработать. Это ненадежно и может привести к появлению трудно обнаруживаемых ошибок, которые появятся в неудобное время.

Если это библиотека откуда-то еще, вы можете увидеть, обновлялась ли она.

Нужно понимать, что код больше не является правильным. Возможно, это было правильно для некоторой реализации в какое-то время, но это не сейчас. (Вы уверены, что это было изначально для gcc 3.0? Предварительно стандартные компиляторы были, ну, не стандартными, и имели много странностей. Избегать - вот для чего нужны стандарты.) Если вы устанавливаете оригинальную систему, вы не сможете правильно взаимодействовать с библиотекой, и новый код не будет работать. Библиотека, которая не взаимодействует с современным кодом, имеет ограниченное использование.

В противном случае вам придется отказаться от позиции, согласно которой вы не можете изменить библиотеку, и преобразовать ее в стандартный C ++. Вероятно, будет довольно много ошибок, которые довольно легко исправить (например, область действия в for (int i = 0;...)), и могут быть некоторые более тонкие проблемы. Код мог быть верным для определенного компилятора, но сейчас это не так.

4 голосов
/ 09 февраля 2010

fstream.h и подобные файлы - это стандартные версии fstream и аналогичные файлы, указанные в Стандарте C ++, которые поставляются с современными компиляторами. Оба обычно не совместимы. Честно говоря, если за последние 8 лет никто не обновлял библиотеку, чтобы она соответствовала стандарту, вряд ли ее стоит использовать.

1 голос
/ 09 февраля 2010

Почему вы не можете написать скрипт для поиска и замены всех экземпляров

#include <iostream.h>

с

#include <iostream>

И то же самое для остальных?

Обновление : Я согласен с другим ответом и комментариями ниже ... Я оставлю этот ответ, потому что я не думаю, что заявление

Есть много файлов, поэтому я не могу изменить их

действителен:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...