Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Keil - совпадение имён в библиотеке и в модулях основной программы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > Keil
Mister_DSP
Добрый день.

Создаю библиотеку (lib) в Keil по исходникам из множества файлов.
Затем получившуюся библиотеку пристыковываю к другому проекту (главному).

При линковке выдаёт ошибку: найдены одинаковые имена в libfile.o и module.o

Исходные тексты программ не моего авторства, около 100 имён совпадает, так что переименовывать не вариант.

Пробовал static приписывать к библиотечным функциям, в итоге линковщик слинковывает функции из основной программы, а библиотечные пишет что объявлена, но неиспользуется.

Вопрос вот в чём: как изолировать функции библиотеки, чтоб они не выпирали в основном проекте, чтобы можно было использовать одинаковые имена?

Может флаг компилятора/линковщика есть - по умолчанию все имена делать невидимыми?
Mister_DSP
Всё закончилось тем, что файлы библиотеки (c- h-) были проинклудены в одном main.c и с небольшими доработками скомпилировались....

А вот как ограничить видимость имён в пределах одной статической библиотеки - не нашёл.
Читал про __attribute__(visible("hidden")), namespaces всякие - не помогло!
Valentine Loginov
ИМХО, лучше свои все-таки нормально переименовать и/или ограничить область видимости для своих сущностей.

В случае совпадения имён в подключенной библиотеке делаю что-то вроде:
Код
#define timeval cyclone_timeval
#include <cyclone_tcp/core/bsd_socket.h>
#undef timeval
Mister_DSP
Цитата(Valentine Loginov @ Jan 14 2017, 07:51) *
В случае совпадения имён в подключенной библиотеке делаю что-то вроде:.....

Спасибо! Помогло!
Дефайнами переименовал все функции, которые перекрывались!

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.