![]() |
|
Модераторы: bsa |
![]()
|
|
| neosapient |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
Здрвствуйте.
Есть сторонний проект, который требуется собрать. Сложность в том, что вся адресация cpp-файлов идет от вершины проекта, а в самом проекте существует два класса с одинаковыми именами. При сборке проекта для одного из класов создается объектный файл, а для другого не создается. После чего линковщик ругается на нехватку объектных файлов. Сделал упрощенный пример. Допустим, требуется одновременно писать в БД и файл. Сделаны отдельные модули с пространствами имен db и file, которые лежат в одноименных папках. Допустим, и там и там есть класс config. Структура проекта выглядит так:
В main() я создаю оба объекта my::Db::config() и my::file::config(). Обратите внимание как подгружаются заголовочные файлы в db\config.cpp и file\config.cpp! Они подгружаются относительно вершины проекта и содержат путь к hpp-файлу. db/config.cpp
file/config.cpp
В общем, посмотрел я на проект и на то, что ничего не компилируется и решил поставить вершину проекта в Additional Include Directories. Для этого зашел в свойства проекта (Visual Studio 2012, но думаю, от версии студии ошибка не меняется) по адресу "Property->C\C++ -> Additional Include Directories" и прописал вершину проекта "./" Пробую собрать проект и получаю:
Как я понимаю, объектный файл для file::config создался в виде config.obj, а для db::config не создался из-за занятого имени. Как собрать правильно проект? Проект прикреплен к посту. Это сообщение отредактировал(а) neosapient - 30.4.2013, 21:44 |
||||||||
|
|||||||||
| NoviceF |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
Вариант переименовать файлы не рассматривается? Не делал вручную make файлы, но мне кажется, как вариант можно изменить правило в make, по которому формируется этот объектный файл, но как именно, и как на это будет реагировать IDE не могу сказать..
|
|||
|
||||
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
Вариант переименовать файлы не подходит.
как это сделать? мне б инструкцию к решению моей задачи? |
|||
|
||||
| NoviceF |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
Вот так примерно выглядит область make файла отвечающая за сборку простого проекта, который ты привёл вначале (это проект Qt)
что-то про make есть здесь http://habrahabr.ru/post/111691/ Но вообще нужно покопаться и понять что к чему, думаю проблема решаема. Обсуждение аналогичной проблемы http://www.gamedev.ru/code/forum/?id=155999 UPD. Вот ещё пара тем почитать http://stackoverflow.com/questions/2281532...n-different-fol http://stackoverflow.com/questions/3695174...3731643#3731643 Как видим, в студии можно менять имя объектного файла прямо в её интерфейсе. В общем от IDE варианты решения тоже зависят. Может сейчас кто из опытных товарищей подскажет. Это сообщение отредактировал(а) NoviceF - 30.4.2013, 20:44 |
|||
|
||||
| neosapient |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 16.8.2006 Репутация: нет Всего: 4 |
NoviceF, спасибо!
Всё решилось через настройку
+ Присоединённый файл ( Кол-во скачиваний: 1 )
test_fixed.zip 2,67 Kb |
|||
|
||||
| NoviceF |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
||||
|
||||
| NoviceF |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
||||
|
||||
![]()
|
| Правила форума "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. |