Russian Qt Forum
Ноябрь 23, 2024, 08:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [mingw 3.81] undefined reference  (Прочитано 14062 раз)
Urvin
Гость
« : Сентябрь 29, 2009, 21:39 »

C чем может быть связано появление ошибки undefined reference to 'имя функции', если к проекту подключены заголовок .h, текст программы .c и при этом заголовок и тело функции соответственно находятся в подключенных .h и .c?
Записан
BlackTass
Гость
« Ответ #1 : Сентябрь 30, 2009, 07:49 »

может проще код выложить сюда?
Записан
SimpleSunny
Гость
« Ответ #2 : Сентябрь 30, 2009, 08:27 »

Если используется Qt и сигналы / слоты, то возможно пропущен макрос Q_OBJECT.
Если просто компилируете mingw, то возможно не указали mingw, какие фалы необходимо компилировать.

А по существу экстрасенсорика в последнее время не в почёте, поэтому выкладывайте больше информации.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Сентябрь 30, 2009, 09:13 »

А может пропущен 0 в объявлении виртуыльной функции (это если классы есть)
Записан

ArchLinux x86_64 / Win10 64 bit
spectre71
Гость
« Ответ #4 : Сентябрь 30, 2009, 09:38 »

C чем может быть связано появление ошибки undefined reference to 'имя функции', если к проекту подключены заголовок .h, текст программы .c и при этом заголовок и тело функции соответственно находятся в подключенных .h и .c?
Покажи соответствующий код!
Записан
Urvin
Гость
« Ответ #5 : Сентябрь 30, 2009, 10:03 »

Я думал есть некоторое волшебное средство для общих случаев Строит глазки

В подключаемом модуле нет классов и вообще не используются методы Qt, хотя и подключаю к проекту на Qt.
Модуль, к сожалению, писан не мной, я бы класс нафигачил.

Подключаю hiddata.h и hiddata.c, они же соответствующим образом прописываются в файле проекта.
В mainwindow.h добавляю #include hiddata.h.

Для того, чтобы сильно сопли не размазывать, рассмотрим функцию usbhidCloseDevice, в заголовке выглядит так:
Код
C++ (Qt)
void usbhidCloseDevice(usbDevice_t *device);

Тело функции в hiddata.c:
Код
C++ (Qt)
void    usbhidCloseDevice(usbDevice_t *device)
{
   CloseHandle((HANDLE)device);
}

При компиляции получаем undefined reference to 'usbhidCloseDevice(usbDevice_t*)'
И сообщение-то не о несуществующей функции(

Вот архивчик с лысым проектом на Qt: tControl_gui.rar
Записан
zenden
Гость
« Ответ #6 : Сентябрь 30, 2009, 10:20 »

в файле mainwindow.h

Код
C++ (Qt)
// Подключение модуля для общения по USB
extern "C"
{
#include "hiddata.h"
}
Записан
Urvin
Гость
« Ответ #7 : Сентябрь 30, 2009, 10:34 »

Вот люблю я попадать на такие мелочи просто по незнанию.

Теперь все работает как часы! Спасибо!  Веселый
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.363 секунд. Запросов: 23.