Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как совместить два проекта в одном, Нет сил убирать совпадения объявлений :( 
:(
    Опции темы
oliva
Дата 28.3.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.3.2008

Репутация: нет
Всего: нет



Зравствуйте, уважаемые!
Проблема следующая. Имею  некий проект №1 (в данном случае это дистрибутив FreeRTOS, но это не важно). Имею также работающий проект №2, в котором успешно используется ЖКИ, как раз такой как у меня. Хочу аккуратно вытащить драйвер этого индикатора и вставить в проект №1. И чтоб все работало smile

Взял я и начал "влоб" подключать библиотеки одного проекта к другому. Но проблема в том, что масса одинаковых идентификаторов объявлено в этих проектах по разному (особенно через define). Такое впечатление, что программисты специально так поступили, для моих усложнений. Вот уже недельку по вечерам изгаляюсь, и конца этому пока не видно.

Чувтсвую, что должен быть какой-то способ простого решения данной проблемы, но в книжках пока найти не могу. Подскажите, пожалуйста, если кто-нибудь в курсе. Заранеее благодарен.

Это сообщение отредактировал(а) oliva - 29.3.2010, 07:22
PM MAIL   Вверх
bsa
Дата 28.3.2010, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



думаю, ты не по адресу. напиши разработчикам FreeRTOS.
PM   Вверх
oliva
Дата 29.3.2010, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.3.2008

Репутация: нет
Всего: нет



Думаю, FreeRTOS тут непричем. Это такая же Си-шная программа, как и все остальные. Просто нужно объеденить два проекта. Интуитивно чувствую, что нужно как-то компилятор заставить разделить переменные между библиотеками. Но не знаю как  :(
PM MAIL   Вверх
djamshud
Дата 29.3.2010, 12:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Если внешних используемых функций немного, можно обернуть проект 1 в плагин, динамически подгрузить его в порект 2 и выудить все необходимые функции. Вокруг проекта 1 при этом возможно придется организовать небольшую дополнительную API-обвязку.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
oliva
Дата 29.3.2010, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.3.2008

Репутация: нет
Всего: нет



Цитата(djamshud @ 29.3.2010,  12:36)
Если внешних используемых функций немного, можно обернуть проект 1 в плагин, динамически подгрузить его в порект 2 и выудить все необходимые функции. Вокруг проекта 1 при этом возможно придется организовать небольшую дополнительную API-обвязку.

Точно. Похоже это то, что нужно smile Только "плагин" и "АРІ-обвязка" меня смущают. Что ж это такое ? Может ссылка есть какая нибудь на информацию о них, или книга ?
PM MAIL   Вверх
ИванМ
Дата 29.3.2010, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



oliva, почитай по теме WinAPI и создание динамических библиотек (dll). Книг/статей полно.
PM MAIL   Вверх
toxx
Дата 29.3.2010, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Программирование для Windows 95  Петзолд Ч.
Создание эффективных Win-32-приложений с учетом специфики 64-раз. версии Windows Джеффри Рихтер

Хорошие книги по WinApi
PM MAIL   Вверх
oliva
Дата 29.3.2010, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.3.2008

Репутация: нет
Всего: нет



Ну что такое dll в винде  я понимаю. А вот как они делаются для микроконтроллера сейчас с трудом представляю. Надо подумать. Спасибо за подсказку.
PM MAIL   Вверх
ИванМ
Дата 29.3.2010, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Для микроконтроллера они никак не делаются. dll это чисто для винды. Надо написать статическую библиотеку, универсальную для всех проектов, и заменить define на параметры, передаваемые функциям этой библиотеки. Только так лично я вижу решение проблемы.
PM MAIL   Вверх
oliva
Дата 29.3.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.3.2008

Репутация: нет
Всего: нет



Цитата(ИванМ @ 29.3.2010,  15:31)
... написать статическую библиотеку, универсальную для всех проектов, и заменить define на параметры, передаваемые функциям этой библиотеки.

Итак, пишу статическую библиотеку (т.е. если я правильно понял -  файл driver.c cо всеми подключаемыми *.h). Собственно так я и делал.
 "универсальную для всех проектов , и заменить define на параметры, передаваемые функциям этой библиотеки." - вот с этим тяжелее. И в том и другом проектах в инклудах объявлены сотни переменных, часто одинаковых по имени но разных по сути (то разрядностью, то типом отличаются). 
Можете показать "на пальцах" как происходит замена  define на параметры ?
PM MAIL   Вверх
ИванМ
Дата 29.3.2010, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



oliva, замена define на параметры происходит в ручном режиме. Другого принципа пока не придумано. Так что, чувствую, вам придется мирится с тем, что есть. Ничем помочь видимо нельзя.
PM MAIL   Вверх
oliva
Дата 29.3.2010, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.3.2008

Репутация: нет
Всего: нет



Эх ...
Столько времени убил, а похоже всеравно придется самому писать. smile 
PM MAIL   Вверх
xvr
Дата 30.3.2010, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Компилятор чистый С, или может и С++ компилировать? Если может, то можно сделать исходники С++ (просто переименовать файлы) и завернуть все файлы библиотеки в какой нибудь namespace

PM MAIL   Вверх
mes
Дата 30.3.2010, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(xvr @  30.3.2010,  10:00 Найти цитируемый пост)
и завернуть все файлы библиотеки в какой нибудь namespace

только от совпадающих дефайнов это не спасет ..


--------------------
PM MAIL WWW   Вверх
oliva
Дата 31.3.2010, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.3.2008

Репутация: нет
Всего: нет



Цитата(xvr @ 30.3.2010,  11:00)
 завернуть все файлы библиотеки в какой нибудь namespace

Нашел я тут инфу по namespace. Похоже полезная штука. Пользуюсь IAR, С++ он вроде поддерживает (правда я в нем пока не работал, но надеюсь разобраться). 
Хоу спросить, перевод из С в С++ имеет подводные камни в стиле "через месяц оказалось что прога работает совсем не так как должна" ?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1021 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.