Статические библиотеки и мешанина C и C++

Все о программировании под *nix
Аватара пользователя
hlamer
Увлекающийся
Сообщения: 119
Зарегистрирован: 24 фев 2006, 23:34

Статические библиотеки и мешанина C и C++

Сообщение hlamer »

Столкнулся с проблемкой
Есть статическая библиотека на С. И программа на С++. Пытаюсь это дело слинковать, получаю undefined reference.

Пример:
main.cpp

Код: Выделить всё

#include "hello.h"
int main ( int argc, char** argv )
{
hello_world ();
}
hello.h

Код: Выделить всё


extern int hello_world (void);
hello.c (библиотека)

Код: Выделить всё

#include "hello.h"

extern int hello_world (void)
{
return 5;
}

Пытаюсь откомпилировать

Код: Выделить всё

a@st504a:~/code/tmp$ gcc hello.c -c
a@st504a:~/code/tmp$ ar cqs libhello.a hello.o
a@st504a:~/code/tmp$ g++ main.cpp -L. -lhello
/tmp/ccKBlq28.o: In function `main':main.cpp:(.text+0x1d): undefined reference to `hello_world()'
collect2: ld returned 1 exit status
a@st504a:~/code/tmp$ g++ hello.c -c
a@st504a:~/code/tmp$ ar cqs libhello.a hello.o
a@st504a:~/code/tmp$ g++ main.cpp -L. -lhello
С++ с сишной библиотекой линковаться не хочет, если же откомпилировать библиотеку С++ компилятором g++ - линкуется
Аналогично линкуется если все компилировать сишным компилятором.

Вопрос, как всетаки сделать микс ?
Заранее спасибо
И сошел на него Дух Господень...
Нашел он свежую ослиную челюсть, и,
протянув руку свою, взял ее,
и убил ею тысячу человек.
Книга Судей, глава 15, стих 14, 15

Аватара пользователя
Fenix[FEN]
Заглянувший
Сообщения: 35
Зарегистрирован: 15 июл 2005, 19:43

Сообщение Fenix[FEN] »

extern "C" int hello_world (void);
стыдно такое не знать :)

Аватара пользователя
hlamer
Увлекающийся
Сообщения: 119
Зарегистрирован: 24 фев 2006, 23:34

Сообщение hlamer »

Ну...все относительно. Все зависит от опыта и стажа. Вот ты в восемь лет этого не знал, и тебе не было стыдно.
И тем 22 человекам что просмотрели пост и не ответили не факт что стыдно было.
Это так к слову.

А за ответ стасибо:)!
И сошел на него Дух Господень...
Нашел он свежую ослиную челюсть, и,
протянув руку свою, взял ее,
и убил ею тысячу человек.
Книга Судей, глава 15, стих 14, 15

Аватара пользователя
myst
Маньяк
Сообщения: 190
Зарегистрирован: 04 окт 2005, 15:46
Откуда: не возвращаются

Сообщение myst »

Тебе 8 лет, что ли?
Иными вечерами я пью, чтобы кого-нибудь не пристрелить. Это акт благотворительности. Не за что.

Ответить