реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Keil - совпадение имён в библиотеке и в модулях основной программы, изолировать имена в библиотеке от основной программы
Mister_DSP
сообщение Jan 13 2017, 06:13
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050



Добрый день.

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

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

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

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

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

Может флаг компилятора/линковщика есть - по умолчанию все имена делать невидимыми?


--------------------
SPY vs. SPY
Хорошо там, где нет ничего...
Go to the top of the page
 
+Quote Post
Mister_DSP
сообщение Jan 13 2017, 13:40
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050



Всё закончилось тем, что файлы библиотеки (c- h-) были проинклудены в одном main.c и с небольшими доработками скомпилировались....

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


--------------------
SPY vs. SPY
Хорошо там, где нет ничего...
Go to the top of the page
 
+Quote Post
Valentine Logino...
сообщение Jan 14 2017, 06:51
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 7-04-10
Из: Пушкино
Пользователь №: 56 462



ИМХО, лучше свои все-таки нормально переименовать и/или ограничить область видимости для своих сущностей.

В случае совпадения имён в подключенной библиотеке делаю что-то вроде:
Код
#define timeval cyclone_timeval
#include <cyclone_tcp/core/bsd_socket.h>
#undef timeval


Сообщение отредактировал Valentine Loginov - Jan 14 2017, 06:52
Go to the top of the page
 
+Quote Post
Mister_DSP
сообщение Jan 18 2017, 13:51
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050



Цитата(Valentine Loginov @ Jan 14 2017, 07:51) *
В случае совпадения имён в подключенной библиотеке делаю что-то вроде:.....

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



--------------------
SPY vs. SPY
Хорошо там, где нет ничего...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 04:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016