Попытка скомпилировать кросс-платформенный код C ++. Неопределенная ссылка на функцию C - PullRequest
1 голос
/ 11 декабря 2010

Я использовал C-библиотеку RS232 в своем коде C ++ для управления платой Arduino Uno.В моем main.cpp я получил:

#include "rs232.h"

, потому что в заголовочном файле rs232.h у них уже есть:

#ifdef __cplusplus
extern "C" {
#endif

В одной папке у меня есть: main.cpprs232.h rs232.c stdafx.h stdafx.cpp

, и я использую cygwin для компиляции, чтобы код мог использоваться для Linux:

g++ main.cpp

, но я получил ошибки с "... неопределенная ссылка на '_OpenComport' "и похожая на все функции C, которые я вызывал из своего main.cpp.

Может кто-нибудь сказать мне, как включить файл заголовка C в C ++?Или я использовал неверную команду для g ++?

1 Ответ

4 голосов
/ 11 декабря 2010

Вам нужно передать все исходные файлы в компилятор, например,

g++ -o demo.exe main.cpp rs232.c stdafx.cpp

В качестве альтернативы, скомпилируйте части в библиотеку и разделите шаги компиляции и компоновки.

...