Jump to content

    

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

Добрый день.

 

Создаю библиотеку (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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this