Перейти к содержанию
    

Keil - совпадение имён в библиотеке и в модулях основной программы

Добрый день.

 

Создаю библиотеку (lib) в Keil по исходникам из множества файлов.

Затем получившуюся библиотеку пристыковываю к другому проекту (главному).

 

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

 

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

А вот как ограничить видимость имён в пределах одной статической библиотеки - не нашёл.

Читал про __attribute__(visible("hidden")), namespaces всякие - не помогло!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

В случае совпадения имён в подключенной библиотеке делаю что-то вроде:

#define timeval cyclone_timeval
#include <cyclone_tcp/core/bsd_socket.h>
#undef timeval

Изменено пользователем Valentine Loginov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В случае совпадения имён в подключенной библиотеке делаю что-то вроде:.....

Спасибо! Помогло!

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...