2016-02-13 2 views
0

В настоящее время я пытаюсь просто связать файл с именем main.cpp с boost, чтобы сделать asio (асинхронный ввод и вывод). Я использую make-файл для компиляции кода C++ в исполняемую форму. Однако, несмотря на использование -I модификатора на моей команды терминала в Mac OS X, она до сих пор не может найти подходящий каталог для поиска. Вот мой код в главномg ++ #include file not found Ошибка компилятора

#include <asio.hpp> 

int main(){ 
    return 1; 
} 

и вот команда Makefile, что я используя

all: 
g++ -Iboost_1_60_0/boost/ -o main main.cpp 

в моей структуре файла, boost_1_60_0, main.cpp и Makefile все на высшем уровне, где ASIO находится в форсирования папке, которая находится в папке boost_1_60_0. Я очень смущен этим, и любая помощь будет оценена! Благодаря!

EDIT: Полная ошибка

1 error generated. 
make: *** [all] Error 1 
iMats-2:SerialC++ wfehrnstrom$ make 
g++ -Iboost_1_60_0 -o main main.cpp 
main.cpp:2:10: fatal error: 'asio.hpp' file not found 
+0

Я предполагаю, что вы не видите весь путь, cd в бункер с терминала и запустите 'pwd'. – SHR

+0

Сообщите об ошибке. – user657267

+0

'#include ' Почему? Это не только устаревший заголовок с C, но вы не используете никаких функций ввода-вывода. –

ответ

1

Вы должны использовать -Iboost_1_60_0 (или, еще лучше, установить подталкивание правильно, так что он находится автоматически под /usr/include/), и писать #include <boost/asio.hpp>.

Включающие директивы внутри Boost сам примет эту форму, поэтому & hellip;

Кстати, это не имеет ничего общего с исключениями. Предположительно, это ошибка компилятора, которую вы видели.

+0

Спасибо за ваши предложения. Ошибка компиляции в операторе #include была решена, но теперь я получаю еще более странную ошибку: undefined символы для архитектуры x86_64: "boost :: system :: system_category()", на которые ссылаются: ___cxx_global_var_init2 в main-f49282 .o повышение :: ASIO :: ошибка :: get_system_category() в главном-f49282.o "повышение :: системы :: generic_category()", ссылочных от: ___cxx_global_var_init в главной f49282.o ___cxx_global_var_init1 в Main- f49282.o ld: символ (-ы) не найден для архитектуры x86_64 – wfehrn

+0

Вы знаете, что может быть причиной этого? – wfehrn

+0

@wfehrn: Да, вы забыли связать библиотеку. –