Помогите с gcc. Непонятные ошибки. (это просто маразм какой-то...)

Модератор: Модераторы разделов

Ответить
Аватара пользователя
lamobot
Сообщения: 10
ОС: Ubuntu 6.06

Помогите с gcc. Непонятные ошибки.

Сообщение lamobot »

Привет всем!

суть проблемы такая. писал демку и решил использовать математику из стаааарого проекта (еще под виндой написанного ))). это два файла asd_math.h и asd_math.cpp. Включил заголовок в проект и вот что получилось.

lamobot@asd:~/Dev/demo$ make
g++ -o main main.o asd_math.o -freeglut -lglut
main.o: In function `main':main.cpp:(.text+0x13): undefined reference to `asd::vec3::vec3()'
:main.cpp:(.text+0x2f): undefined reference to `asd::vec3::vec3(float, float, float)'
collect2: ld returned 1 exit status
make: *** [main] Ошибка 1

http://www.everfall.com/paste/id.php?5qc1xi0pwl3f - тут asd_math.h
http://www.everfall.com/paste/id.php?0hlqbz4jlbb7 - тут asd_math.cpp
http://www.everfall.com/paste/id.php?iar5h61z3ban - тут main.cpp
http://www.everfall.com/paste/id.php?n20rl4yxjpbi - тут makefile

помогите я так не могу. ну почему он пишет undefined reference? этож почти хелловорлд. Тем более эти файлы asd_math точно компилировались и вроде бы даже работали
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: Помогите с gcc. Непонятные ошибки.

Сообщение aLexx programmer »

Без inline всё работает.
Спасибо сказали:
Аватара пользователя
lamobot
Сообщения: 10
ОС: Ubuntu 6.06

Re: Помогите с gcc. Непонятные ошибки.

Сообщение lamobot »

Спасибо!! решено. без инлайнов скомпилировалось

вот что пишут в мануале GCC:

When an inline function is not static, then the compiler must assume that there may be calls from other source files; since a global symbol can be defined only once in any program, the function must not be defined in the other source files, so the calls therein cannot be integrated. Therefore, a non-static inline function is always compiled on its own in the usual fashion.

грубо говоря, если вы используете эту инлайн функцию в других файлах-исходниках, то она должна быть определена в пределах заголовочного файла. а я вынес это вон.
Спасибо сказали:
Ответить