Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2014, 17:46   #1
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию g++. Проблема линковки.

Есть item.h:
Код:
class Item
{
public:
    static void Init();
};
Реализация item.cpp:
Код:
#include "item.h"

void Item::Init() { ... }
И код клиент main.cpp
Код:
#include "item/item.h"

int main()
{
      Item item; 
      item.Init();
}
cmd>: g++ -c item\item.cpp // ok
cmd>: g++ -c main.cpp // ok
cmd>: g++ -o a.exe item\item.o main.o // ERROR!!!
Сообщение: main.o:main.cpp.text+0xf): undefined reference to `Item::Init()


,но cmd>: g++ item\item.cpp main.cpp // ok
Почему компилится, компонуется и дает exe? static функции имеют внутреннее связывание, и если бы у нас отсутствовал класс Item в .h файле и был бы просто метод: static void Init(), с реализацией в .cpp, то команда: cmd>: g++ item\item.cpp main.cpp выдала бы ошибку, в чем разница связывания?

UPD:
Кстати, ранее код item.h и item.cpp использовал ранее в другом проекте, все собиралось без проблем с флагом -o, почему сейчас возникла такая проблема не могу понять.

Последний раз редактировалось halcyon; 20.03.2014 в 07:12.
halcyon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типы линковки Igor95 Общие вопросы C/C++ 15 08.08.2013 12:26
Ошибка линковки + вопрос hvz- Win Api 17 14.03.2012 22:47
Ошибка линковки! Hacker19_90 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 19.01.2012 06:43
Шаблонный класс, ошибка линковки revaldo666 Общие вопросы C/C++ 1 12.12.2011 15:57
Банальная ошибка линковки prouser Общие вопросы C/C++ 2 24.07.2011 04:22