2015-03-16 1 views
0

это, вероятно, будет глупым вопросом для вас, но у меня нет опыта работы на C++, что так всегда. Я использую проект с открытым исходным кодом osrm (что удивительно). Чтобы запросить маршрут, вы сделали HTTP-запрос. Чтобы сократить время работы, я хотел бы создать оболочку вокруг кода и вызвать ее с помощью командной строки. Поэтому я немного искал Google и обнаружил, что osrm уже создает статический lib (.a-файл) при компиляции проекта. Я также нашел piece of code, который указывает мне в правильном направлении для создания обертки. Поэтому, чтобы начать, я создаю простую программу hello world (см. Ниже), которая включает в себя некоторые файлы из этой статической библиотеки. Чтобы скомпилировать, я последовал за this учебником. Моя структура каталогов выглядит следующим образом: ./helloWorld.cpp ./libs/libOSRM.aКомпиляция C++ со статическим lib

И команда для компиляции заключается в следующем:

gcc –static helloworld.cpp –L ./libs –l libOSRM.a 

Код это Selve:

#include "Router.h" 
#include "boost/filesystem/path.hpp" 
#include "ServerPaths.h" 
#include "ProgramOptions.h" 
#include <InternalDataFacade.h> 
#include <viaroute.hpp> 
#include <iostream.h> 

main() 
{ 
    cout << "Hello World!"; 
    return 0; 
} 

точная ошибка я получил:

fatal error: ServerPaths.h: No such file or directory #include "ServerPaths.h"

+0

Когда вы используете опцию '-lNAME', компоновщик будет искать библиотеку с именем' libNAME.a', поэтому измените свой вариант на '-lOSRM', и библиотека будет найдена. –

+2

Мой комментарий выше был просто предположением, потому что вы не говорите, в чем ваша проблема, или если у вас даже есть * проблема. Какой у Вас вопрос? Пожалуйста, дополните! –

+0

Я обновил вопрос. Извините, если не ясно. Я обновил свою команду, но все равно получил ту же ошибку. – jorne

ответ

2

Добавьте параметры -IPathToTheHeaderFiles в параметры компилятора. Таким образом, он найдет файлы для включения. Замените PathToTheHeaderFiles на путь, в котором находится файл ServPaths.h.

Редактировать: добавить столько файлов -I, сколько потребуется для последующих файлов заголовков.

Кроме того, было бы целесообразно, чтобы прочитать книгу о C++ или/и GCC manual

Раздел 3.11 поможет.

+0

спасибо, это помогло. все же теперь компилятор жалуется, что включение этого файла заголовка не может быть найдено. Любые предложения по этому поводу? – jorne

+0

Еще раз спасибо арфу! – jorne