![]() |
|
Модераторы: bsa |
![]()
|
|
| oliva |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.3.2008 Репутация: нет Всего: нет |
Зравствуйте, уважаемые!
Проблема следующая. Имею некий проект №1 (в данном случае это дистрибутив FreeRTOS, но это не важно). Имею также работающий проект №2, в котором успешно используется ЖКИ, как раз такой как у меня. Хочу аккуратно вытащить драйвер этого индикатора и вставить в проект №1. И чтоб все работало Взял я и начал "влоб" подключать библиотеки одного проекта к другому. Но проблема в том, что масса одинаковых идентификаторов объявлено в этих проектах по разному (особенно через define). Такое впечатление, что программисты специально так поступили, для моих усложнений. Вот уже недельку по вечерам изгаляюсь, и конца этому пока не видно. Чувтсвую, что должен быть какой-то способ простого решения данной проблемы, но в книжках пока найти не могу. Подскажите, пожалуйста, если кто-нибудь в курсе. Заранеее благодарен. Это сообщение отредактировал(а) oliva - 29.3.2010, 07:22 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
думаю, ты не по адресу. напиши разработчикам FreeRTOS.
|
|||
|
||||
| oliva |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.3.2008 Репутация: нет Всего: нет |
Думаю, FreeRTOS тут непричем. Это такая же Си-шная программа, как и все остальные. Просто нужно объеденить два проекта. Интуитивно чувствую, что нужно как-то компилятор заставить разделить переменные между библиотеками. Но не знаю как :(
|
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
Если внешних используемых функций немного, можно обернуть проект 1 в плагин, динамически подгрузить его в порект 2 и выудить все необходимые функции. Вокруг проекта 1 при этом возможно придется организовать небольшую дополнительную API-обвязку.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| oliva |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.3.2008 Репутация: нет Всего: нет |
Точно. Похоже это то, что нужно |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
oliva, почитай по теме WinAPI и создание динамических библиотек (dll). Книг/статей полно.
|
|||
|
||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
Программирование для Windows 95 Петзолд Ч.
Создание эффективных Win-32-приложений с учетом специфики 64-раз. версии Windows Джеффри Рихтер Хорошие книги по WinApi |
|||
|
||||
| oliva |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.3.2008 Репутация: нет Всего: нет |
Ну что такое dll в винде я понимаю. А вот как они делаются для микроконтроллера сейчас с трудом представляю. Надо подумать. Спасибо за подсказку.
|
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Для микроконтроллера они никак не делаются. dll это чисто для винды. Надо написать статическую библиотеку, универсальную для всех проектов, и заменить define на параметры, передаваемые функциям этой библиотеки. Только так лично я вижу решение проблемы.
|
|||
|
||||
| oliva |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.3.2008 Репутация: нет Всего: нет |
Итак, пишу статическую библиотеку (т.е. если я правильно понял - файл driver.c cо всеми подключаемыми *.h). Собственно так я и делал. "универсальную для всех проектов , и заменить define на параметры, передаваемые функциям этой библиотеки." - вот с этим тяжелее. И в том и другом проектах в инклудах объявлены сотни переменных, часто одинаковых по имени но разных по сути (то разрядностью, то типом отличаются). Можете показать "на пальцах" как происходит замена define на параметры ? |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
oliva, замена define на параметры происходит в ручном режиме. Другого принципа пока не придумано. Так что, чувствую, вам придется мирится с тем, что есть. Ничем помочь видимо нельзя.
|
|||
|
||||
| oliva |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.3.2008 Репутация: нет Всего: нет |
Эх ...
Столько времени убил, а похоже всеравно придется самому писать. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Компилятор чистый С, или может и С++ компилировать? Если может, то можно сделать исходники С++ (просто переименовать файлы) и завернуть все файлы библиотеки в какой нибудь namespace
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
только от совпадающих дефайнов это не спасет .. |
|||
|
||||
| oliva |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.3.2008 Репутация: нет Всего: нет |
Нашел я тут инфу по namespace. Похоже полезная штука. Пользуюсь IAR, С++ он вроде поддерживает (правда я в нем пока не работал, но надеюсь разобраться). Хоу спросить, перевод из С в С++ имеет подводные камни в стиле "через месяц оказалось что прога работает совсем не так как должна" ? |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |