Есть два способа сделать это. В то время как оба работают, один является «более чистым», чем другой. Боковое примечание: Как указано в троянфи, вы можете оставить команду .o
в команде компиляции/ссылки.
Вот два этапа:
cc -c main.c
c++ -o mypgm example.cpp main.o
Это немного некрасиво, потому что обычно конвенции является то, что источник, который компилируется является один с main
Вот более обычным способом:
c++ -c example.cpp
cc -c main.c
c++ -o mypgm main.o example.o
ПРИМЕЧАНИЕ: В обоих случаях «линкер» должен быть c++
, чтобы разрешить std::*
, что example.cpp
использует
UPDATE:
Что mypgm
?
mypgm
[только пример имя] имя из [полностью связаны и готов к запуску] вывода исполняемого файла или программы. Это аргумент для опции -o
. Компилятор принимает ваш перемещаемый ввод .o
файлов, связывает их вместе, чтобы создать выходной файл [который теперь можно запустить как команду].
Это довольно стандартная номенклатура для чего-то произвольного в примере инструкции или последовательности кода [как здесь, на SO]. Вы можете заменить «mypgm» на «ursa_majors_test_program» или «example» или что бы вы ни хотели. Чтобы запустить программу, затем введите ./mypgm
[или ./ursa_majors_test_program
или ./example
]
Там нет волшебной на имя, так же, как не было никакой магии, чтобы вы назвать ваши исходные файлы main.c
и example.cpp
Это должно быть описательным функции. Если вы сказали, что работаете над программой редактирования текста, в моем примере я мог бы использовать -o editor
Возможный дубликат [Что такое неопределенная ссылка/неразрешенная ошибка внешнего символа и как ее исправить?] (Http: //переполнение стека.com/questions/12573816/what-is-un-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix) –
Это должно работать, и я могу только предположить, что вы не подключаетесь 'example.cpp' (' example.o'). – trojanfoe