gcc - связывает несколько файлов c с файлом c ++ - PullRequest
0 голосов
/ 30 января 2012

Как связать 2 файла библиотеки c с файлом c ++?

Прямо сейчас я делаю это:

> gcc -c file1.c (this works fine) 

> gcc -c file2.c ( this works fine)

> g++ -c myc++file.cpp (this works fine)

> g++ -o program myc++file.o file1.o file2.o

-> Я получаю сообщение об ошибке, в котором говорится, что это неопределенная ссылка на функцию в myc ++ file.o, но эта функция определена в file2.o. Что-то не так, но я просто не могу понять.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 30 января 2012

Эта функция static?

Вы использовали extern "C" в myc++file.cpp?

, если ответы no и yes, покажите нам код.

(Кстати, попробуйте проверить с помощью nm, действительно ли эта функция в file2.o)

2 голосов
/ 30 января 2012

Вам нужно использовать extern "C" в объявлении функции.
Когда C ++ видит внешнюю функцию, он искажает имя, чтобы идентифицировать параметры и типы возвращаемых значений. При попытке связать его с кодом C имена не совпадают.
extern "C" говорит C ++ не искажать имя, поэтому оно успешно связывается с кодом C.

...