关于否此类文件或目录编译已终止错误

时间:2011-06-28 14:05:13

标签: c++ network-programming include-path

我是C ++的新手,我为网络编程安装了lib Com++ 但当我只包括头文件

#include <iostream>
#include <ComPP/ComPlusPlus>
using namespace std;

int main(int argc ,char *argv[]){

    cout << "Hello World" << endl;
    return 0;
}

我收到错误

main.cpp:2:29: fatal error: ComPP/ComPlusPlus: No such file or directory

使用fedora linux 我使用此命令进行编译,如手册中所述

g++ -I ./ -L./ -o server  main.cpp -lCommPP -lsys -lpthread -lrt

目录/ usr / include / ComPP /与所有头文件一起存在

ComPP
├── ComPlusPlus
│   ├── AClnt.h
│   ├── ASrvContext.h
│   ├── ASrv.h
│   ├── ASrvProperties.h
│   ├── Clone.h
│   ├── Comm.h
│   ├── ComPlusPlus
│   ├── Context.h
│   ├── Daemon.h
│   ├── Directory.h
│   ├── DirEntry.h
│   ├── File.h
│   ├── Launch.h
│   ├── Mutex.h
│   ├── Poll.h
│   ├── Process.h
│   ├── SClnt.h
│   ├── Sem.h
│   ├── ShMem.h
│   ├── Signalling.h
│   ├── Socket.h
│   ├── SocketTcp.h
│   ├── SocketUdp.h
│   ├── SocketUnix.h
│   ├── SrvProperties.h
│   ├── SSrvContext.h
│   ├── SSrv.h
│   ├── SSrvProperties.h
│   └── Thread.h
└── SysPlusPlus
    ├── ComException.h
    ├── config.h
    ├── GenCfg.h
    ├── Logger.h
    ├── syscall.h
    ├── syslib.h
    ├── SysPlusPlus
    └── Tools.h

2 个答案:

答案 0 :(得分:2)

您不包含头文件。 #include <ComPP/ComPlusPlus>这是一个目录。从您发布的内容中,您需要添加另一个ComPlusPlus。 #include <ComPP/ComPlusPlus/ComPlusPlus>但是在没有.h结尾的情况下使用标头非常罕见。所以你最好检查目录和文件的拼写。

仔细阅读cplusplus.com网站后。这个错误确实是另一回事 他们假设您将编译器的包含路径设置为ComPP。例如艾哈迈德已经评论过-I / usr / include / ComPP 因此,您可以在cpp文件中完全限定include,因为/ usr / include /是gcc的标准搜索路径,或者您添加了另一条路径。
尽管如此,我发现使用没有.h结尾的标题非常恼火。

答案 1 :(得分:0)

下载comPP库时,Documentation文件夹中有ProgrammersGuide.pdf。在那里你可以找到需要的库。该文件不是100%准确。我使用这种格式工作:

g++ -I/usr/include/ComPP -lComPP -lSysPP -lpthread -lrt ExampleClient.cpp -o ExampleClient

这只有在包含以下内容时才有效:

#include <SysPlusPlus/SysPlusPlus>
#include <ComPlusPlus/ComPlusPlus>

亲切的问候,

马腾