在C ++中没有.h的头文件

时间:2010-07-16 13:50:22

标签: c++ linux header-files

我遇到包括iostream.hfstream.h等标准头文件的问题。在我的系统上,在usr/include/c++/4.3下,没有任何文件具有“.h”扩展名(例如,它只是 iostream 而不是 iostream.h )。 / p>

这很好,花花公子,但我正在尝试使用另一个库DCMTK,它可以执行#include<iostream.h>之类的操作。不幸的是,在我的系统上没有“iostream.h”这样的东西,只有“iostream”,这意味着我的编译器给了我像error: iostream.h: No such file or directory这样的错误。

我想我可以创建从iostream.hiostream的软链接,但这似乎可能会产生麻烦,首先是麻烦,其次,真的很烦人。还有其他解决方案吗?

为了完整起见,我给编译该命令的命令是

g++ -o gc_on_ctp -g -Wall -Idicom/include -Ldicom/lib gc_on_ctp.cpp -ldcmdata

可以想象,头文件位于dicom / include下,库位于dicom / lib下,名为libdcmdata.a。

4 个答案:

答案 0 :(得分:7)

我建议你看看here。它解释了为什么以及何时出现iostream.h / iostream,为什么它存在以及如何解决这些问题。

主要iostream.h被视为 DEPRECATED UNRELIABLE IMPLEMENTATION SPECIFIC 并使用{ {1}}代替那个可能会导致错误。

答案 1 :(得分:6)

只需创建一个新的iostream.h文件,其中包含一行:#include <iostream>。这似乎是DCMTK的一个大错误,因为标准是这些文件名中不应该有.h。

答案 2 :(得分:3)

这些标头已弃用/预标准。在gcc上我认为它们现在位于#include <backward/iostream.h>等。

另一方面,如果您要链接的库需要较旧的不兼容版本的标准库,则可能会遇到更多问题。

答案 3 :(得分:1)

我会修复(过时的)库。您可以使用就地正则表达式搜索和替换来执行此操作:

perl -e "s/iostream.h/iostream/g;" -pi $(find . -iname "*.cpp")

find . -iname "*.cpp" -print0 | xargs -0 sed -i 's/iostream.h/iostream/g'

注意:执行此操作时要小心......它会从您开始的路径递归影响所有文件。