Jump to content

    
Sign in to follow this  
Mister_DSP

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

Recommended Posts

Добрый день.

 

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

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

 

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

 

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

Edited by Valentine Loginov

Share this post


Link to post
Share on other sites
В случае совпадения имён в подключенной библиотеке делаю что-то вроде:.....

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

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

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this