Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 47

Undefined reference to или почему не определена функция в Eclipce

10.06.2017, 17:34. Показов 6623. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Пишу в Еклипсе
в общем проблема такая, прикрутил готовый модуль, но его функции не доступны, почему? понять не могу, перетыкал все что мог. как бы до этого проблем с подключением не было

Application/User/main.o: In function `main':
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:97: undefined reference to `reg_wizchip_cs_cbfunc(void (*)(), void (*)())'
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:98: undefined reference to `reg_wizchip_spi_cbfunc(unsigned char (*)(), void (*)(unsigned char))'
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:165: undefined reference to `wizchip_init(unsigned char*, unsigned char*)'
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:170: undefined reference to `wizchip_setnetinfo(wiz_NetInfo_t*)'
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:171: undefined reference to `wizchip_getnetinfo(wiz_NetInfo_t*)

но самое интересно хидер файла с функция прописан в заголовке , и сами пути добавлены в патч ту симбол

куда копать подскажите кто знает

Спасибо
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2017, 17:34
Ответы с готовыми решениями:

Undefined reference to шаблонная функция
Добрый день. Есть класс с шаблонной функцией:class ItemsPrivate : public QWidget, public Tab { Q_OBJECT public: explicit...

Почему происходит ошибка undefined reference to hgeCreate
Всем привет. Я новичок по C++ и недавно решил освоить разработку игр. Скачал с интернета 2D движок для графики HGE, однако никак не могу...

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу "С++ для чайников" Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

42
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 47
11.06.2017, 05:27  [ТС]
Студворк — интернет-сервис помощи студентам
эх печаль печльная (ну все равно спасибо)
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
11.06.2017, 05:30
Цитата Сообщение от Efim25 Посмотреть сообщение
я даже вижу что объектные файлы созданы нужных С файлов
Вывод компилятора видишь? Там должно быть видно: что и с какими файлами он делает.
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 47
11.06.2017, 05:32  [ТС]
make all
Building target: lan5500_v2.elf
Invoking: MCU G++ Linker
arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb -mfloat-abi=soft -specs=nosys.specs -specs=nano.specs -T"../STM32F103C8Tx_FLASH.ld" -Wl,-Map=output.map -Wl,--gc-sections -fno-exceptions -fno-rtti -o "lan5500_v2.elf" @"objects.list" -lm
Application/User/main.o: In function `main':
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:97: undefined reference to `reg_wizchip_cs_cbfunc(void (*)(), void (*)())'
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:98: undefined reference to `reg_wizchip_spi_cbfunc(unsigned char (*)(), void (*)(unsigned char))'
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:165: undefined reference to `wizchip_init(unsigned char*, unsigned char*)'
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:170: undefined reference to `wizchip_setnetinfo(wiz_NetInfo_t*)'
C:/C++/Progekt882/lan5500_v2/Src/main.cpp:171: undefined reference to `wizchip_getnetinfo(wiz_NetInfo_t*)'
collect2.exe: error: ld returned 1 exit status
make: *** [lan5500_v2.elf] Error 1

сейчас это весь вывод, можно почистить проект, тогда он каждый файл опять в объектный пересоберет
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
11.06.2017, 05:34
Цитата Сообщение от Efim25 Посмотреть сообщение
я даже вижу что объектные файлы созданы нужных С файлов
Уверен, что всех нужных файлов? Это ещё до работы компоновщика происходит, а реализаций компоновщик не видит.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
11.06.2017, 05:35
Цитата Сообщение от Efim25 Посмотреть сообщение
просто если с эклипсом не работали , не факт что поможете
Изредка работал, но именно этот момент не помню, а на свой ПК эклипс не ставил, не посмотрю. Но в любом случае, в эклипсе всё это через Ж в плане работы с С++. Это если на Java в нём возиться, так всё логичнее.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
11.06.2017, 05:35
Цитата Сообщение от Efim25 Посмотреть сообщение
сейчас это весь вывод, можно почистить проект, тогда он каждый файл опять в объектный пересоберет
Сделай Пересобрать и покажи вывод компилятора.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
11.06.2017, 05:40
Цитата Сообщение от Efim25 Посмотреть сообщение
make all
а make-файл кто создаёт? И содержимое make-файла покажи, вероятно там не всё есть из того что нужно...
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 47
11.06.2017, 05:44  [ТС]
дне дает слишком много символов и опять же все не могу скопировать т.к. верхушка улетает

Добавлено через 57 секунд
######################################## ########################################
# Automatically-generated file. Do not edit!
######################################## ########################################

-include ../makefile.init

RM := rm -rf

# All of the sources participating in the build are defined here
-include sources.mk
-include lcd1602/subdir.mk
-include lan/Internet/httpServer/subdir.mk
-include lan/Internet/TFTP/subdir.mk
-include lan/Internet/SNTP/subdir.mk
-include lan/Internet/SNMP/subdir.mk
-include lan/Internet/FTPServer/subdir.mk
-include lan/Internet/FTPClient/subdir.mk
-include lan/Internet/DNS/subdir.mk
-include lan/Internet/DHCP/subdir.mk
-include lan/Ethernet/W5500/subdir.mk
-include lan/Ethernet/subdir.mk
-include lan/Application/loopback/subdir.mk
-include Drivers/STM32F1xx_HAL_Driver/subdir.mk
-include Drivers/CMSIS/subdir.mk
-include Application/User/subdir.mk
-include Application/SW4STM32/subdir.mk
-include subdir.mk
-include objects.mk

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(S_UPPER_DEPS)),)
-include $(S_UPPER_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
endif

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build variables

# All Target
all: lan5500_v2.elf

# Tool invocations
lan5500_v2.elf: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: MCU G++ Linker'
arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb -mfloat-abi=soft -specs=nosys.specs -specs=nano.specs -T"../STM32F103C8Tx_FLASH.ld" -Wl,-Map=output.map -Wl,--gc-sections -fno-exceptions -fno-rtti -o "lan5500_v2.elf" @"objects.list" $(USER_OBJS) $(LIBS) -lm
@echo 'Finished building target: $@'
@echo ' '
$(MAKE) --no-print-directory post-build

# Other Targets
clean:
-$(RM) *
-@echo ' '

post-build:
-@echo 'Generating binary and Printing size information:'
arm-none-eabi-objcopy -O binary "lan5500_v2.elf" "lan5500_v2.bin"
arm-none-eabi-size "lan5500_v2.elf"
-@echo ' '

.PHONY: all clean dependents
.SECONDARY: post-build

-include ../makefile.targets

майке файл

Добавлено через 57 секунд
то что мне нужно тут (что не хочет работать)
-include lan/Ethernet/W5500/subdir.mk
-include lan/Ethernet/subdir.mk
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
11.06.2017, 05:58
Попробуй как здесь - http://eclipsebook.in/c-cpp-de... e-managed/ - указать Source location все папки...
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 47
11.06.2017, 06:11  [ТС]
не помогло, правда теперь завалил проект, т.к. все пути потерялись

минут 15 все переделывать

Добавлено через 8 минут
пересобрал все, в общем как было так и осталось
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
11.06.2017, 13:42
Лучший ответ Сообщение было отмечено Efim25 как решение

Решение

Efim25, вот где-то у тебя в main.cpp подключается этот файл:
C++
1
#include "socket.h"
А теперь ты возьми и сделай так:
C++
1
2
3
extern "C" {
#include "socket.h"
}
1
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 47
11.06.2017, 13:52  [ТС]
DrOffset только этот файл или все 3 штуки?
C++
1
2
3
#include "wizchip_conf.h"
#include "socket.h"
#include "w5500.h"
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
11.06.2017, 13:55
Цитата Сообщение от Efim25 Посмотреть сообщение
только этот файл или все 3 штуки?
Если так, то все три
C++
1
2
3
4
5
extern "C" {
#include "wizchip_conf.h"
#include "socket.h"
#include "w5500.h"
}
Просто "wizchip_conf.h" подключается внутри "socket.h", не думаю, что он тут нужен явно.
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 47
11.06.2017, 14:02  [ТС]
C++
1
2
3
4
5
extern "C" {
#include "wizchip_conf.h"
#include "socket.h"
#include "w5500.h"
}
так собралось, в МК не заливал

DrOffset если вам не сложно объясните почему так?????
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
11.06.2017, 14:22
Цитата Сообщение от Efim25 Посмотреть сообщение
если вам не сложно объясните почему так?????
Ты к проекту цепляешь файлы на С. А используешь их из С++.
В С++ есть такая возможность как перегрузка функций. Чтобы различать перегруженные функции на уровне линкера, типы параметров кодируются в ее имя, т.е. в С++ функция
C++
1
void foo(int);
на самом деле будет иметь имя _Z1fooi (пример для компилятора G++). Процедура преобразования имен называется name mangling или декорация имен. В твоем случае он искал именно декорированное имя, хотя его в программе не было - в итоге ошибка линкера.
В языке С нет перегрузки и никакое преобразование не нужно. Поэтому, если мы используем функцию из С в С++, нам нужно явно указать, что к имени функции не нужно применять декорацию.

Добавлено через 3 минуты
В данном случае, мы просто сказали, что все содержимое этих трех заголовочных файлов использует связывание в стиле С (extern "C"), значит компилятор не будет декорировать имена (если говорить строго, он будет декорировать имена в стиле языка С) внутри фигурных скобок.
3
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 47
11.06.2017, 16:11  [ТС]
DrOffset большей спасибо

Добавлено через 1 час 40 минут
в МК код залил, все работает
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
11.06.2017, 16:39
Цитата Сообщение от DrOffset Посмотреть сообщение
если мы используем функцию из С
Функция из Си - это функция, реализация которой в файле с расширением .c? Обрабатывает компилятор Си?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
11.06.2017, 16:51
nd2, видимо да. Что g++ компилирует cpp-файлы, а gcc - компилирует с-файлы...
0
0 / 0 / 0
Регистрация: 22.12.2015
Сообщений: 47
11.06.2017, 16:53  [ТС]
TRam_ правильно написал, g++ компилирует cpp-файлы, а gcc - компилирует с-файлы
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
11.06.2017, 17:05
Цитата Сообщение от nd2 Посмотреть сообщение
Функция из Си - это функция, реализация которой в файле с расширением .c? Обрабатывает компилятор Си?
Да. По поводу того, что gcc только для С - нет.
gcc - это GNU Compiler Collection, если ты ему подаешь на вход *.c файл, то он внутри вызывает компилятор С, - cc, если это *.cpp файл, то вызываться будет g++ - компилятор с++. Аналогично, если это будет, например, *.m файл, то вызовется соответствующий компилятор objective c. Ну и т.п.

https://gcc.gnu.org/onlinedocs... 2b-and-GCC
Most of the compilers for languages other than C have their own names. The C++ compiler is G++, the Ada compiler is GNAT, and so on. When we talk about compiling one of those languages, we might refer to that compiler by its own name, or as GCC. Either is correct.
В принципе, некоторые среды сами распознают по расширению, каким компилятором нужно собрать тот или ной файл, и учитывают это при добавлении файла в проект - сразу назначают правильный компилятор. Исходя из этого генерируется мейкфайл или другой вариант сборки.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2017, 17:05
Помогаю со студенческими работами здесь

Undefined reference или передача string в конструктор класса
Собственно проблема на этапе компиляции в main.cpp на 19 строке. Не понимаю, почему он требует 4 аргумента, когда у меня в объявлении...

Undefined reference to pow() почему в университете gcc такое выдает, а дома нет?
В университете стоит линукс и при обращении к библиотекам из math.h линковщик выводит такую ошибку. Решается эта проблема передачей...

Не определена функция, не могу понять почему?
(defun pr (C N) (loop (IF (= (mod C N) 0) (and (print N) (setq N 2) (setq C (/ C N))) (IF (= (C N)) (return) (IF (/= C 0)...

Uncaught ReferenceError: checkFunc is not defined. Почему функция не определена?
Хочу проверить e-mail на валидность. Выводит такую ошибку: Uncaught ReferenceError: checkFunc is not defined. Вот код: ...

Процедура или функция с указанным именем не определена
Здравствуйте. Почему возникает ошибка? Макет = ПолучитьМакет("СформироватьПримеры"); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru