Mister_DSP 0 13 января, 2017 Опубликовано 13 января, 2017 · Жалоба Добрый день. Создаю библиотеку (lib) в Keil по исходникам из множества файлов. Затем получившуюся библиотеку пристыковываю к другому проекту (главному). При линковке выдаёт ошибку: найдены одинаковые имена в libfile.o и module.o Исходные тексты программ не моего авторства, около 100 имён совпадает, так что переименовывать не вариант. Пробовал static приписывать к библиотечным функциям, в итоге линковщик слинковывает функции из основной программы, а библиотечные пишет что объявлена, но неиспользуется. Вопрос вот в чём: как изолировать функции библиотеки, чтоб они не выпирали в основном проекте, чтобы можно было использовать одинаковые имена? Может флаг компилятора/линковщика есть - по умолчанию все имена делать невидимыми? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 13 января, 2017 Опубликовано 13 января, 2017 · Жалоба Всё закончилось тем, что файлы библиотеки (c- h-) были проинклудены в одном main.c и с небольшими доработками скомпилировались.... А вот как ограничить видимость имён в пределах одной статической библиотеки - не нашёл. Читал про __attribute__(visible("hidden")), namespaces всякие - не помогло! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
becopt 0 14 января, 2017 Опубликовано 14 января, 2017 (изменено) · Жалоба ИМХО, лучше свои все-таки нормально переименовать и/или ограничить область видимости для своих сущностей. В случае совпадения имён в подключенной библиотеке делаю что-то вроде: #define timeval cyclone_timeval #include <cyclone_tcp/core/bsd_socket.h> #undef timeval Изменено 14 января, 2017 пользователем Valentine Loginov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 18 января, 2017 Опубликовано 18 января, 2017 · Жалоба В случае совпадения имён в подключенной библиотеке делаю что-то вроде:..... Спасибо! Помогло! Дефайнами переименовал все функции, которые перекрывались! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться