C ++ try语句不能与#34; #include"

时间:2017-01-09 06:35:03

标签: c++ compiler-errors compilation g++ dlib

我的Dlib安装在多个地方,所以我编写了一个脚本,它将搜索多个位置以查找我需要的文件进行编译:

int main()
{
    try{
        #include <dlib/image_processing/frontal_face_detector.h>
        #include <dlib/image_io.h>
    }catch(...){
        cout << "Location A is incorrect: " << e << endl;
    }


    try{
        #include <dlib/dlib/image_processing/frontal_face_detector.h>
        #include <dlib/dlib/image_io.h>
    }catch(...){
        cout << "Location B is incorrect: " << e << endl;
    }



    return 0;
}

但由于某些原因,g++仍然给我相同的No such file...错误:

g++ IWillFindLib--00.cpp -o IWillFindLib--00.o
IWillFindLib--00.cpp:8:59: fatal error: dlib/image_processing/frontal_face_detector.h: No such file or directory
   #include <dlib/image_processing/frontal_face_detector.h>
                                                       ^
compilation terminated.

现在,我知道我可以使用g++ -I home/name/dlib添加位置,但我希望完成的项目完全不需要用户输入即可完成。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

ERR。 try catch在运行时发生。 #include在编译时发生(非常早)。 #include在您真正拥有C或C ++编译器之前就已经发生了 - 此时它只是一个相当简单的文本处理器。

C ++ 17有__has_include可以做你想要的 - 但你可能没有C ++ 17编译器。

请参阅此答案:https://stackoverflow.com/a/33260104/771073