Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2010, 19:32   #1
Maksim_27_10
 
Регистрация: 15.04.2010
Сообщений: 7
По умолчанию Разделение.

Я работаю в Microsoft Visual Studio 2008. Что нужно изменить в проекте, чтобы связывание проекта происходила нормально(добавление cpp.-файла не предлагать)?
Описание проблемы.
Проект находится в папке D:\\C++\\Project. Класс случайных чисел находится в папке D:\\C++\\Library. Класс случайных чисел разделён на два файла: объявление класса - C_Random.h, файл реализации - C_Random.cpp. Данный класс включён, с помощью директивы include, в самый "главный" заголовок проекта(в него включены все включаемые файлы): D:\\C++\\Project\\01_Header_Files\\ 01_Base.h. Как вы уже могли догадаться, к классу случайных чисел я отношусь как к библиотечному классу(он разделён и находится в другой папке). Все индивидуальные файлы для данного проекта находятся в той же папки, что и проект.
Maksim_27_10 вне форума Ответить с цитированием
Старый 15.04.2010, 20:01   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Что значит добавление .cpp файла не предлагать? А как иначе? Необходимо иметь полный код всех модулей(исходный код, либо объектный код). Если так не хочется .cpp файл добавлять, можете скомпилировать его заранее и добавить .obj-файл, или .lib-файл(если это библиотека объектных файлов) в список входных файлов для компоновщика.
Но в любом случае добавлять модуль придётся в сыром(.cpp) или полуприготовленном(.obj) виде
netrino вне форума Ответить с цитированием
Старый 18.04.2010, 21:38   #3
Maksim_27_10
 
Регистрация: 15.04.2010
Сообщений: 7
По умолчанию

"Что значит добавление .cpp файла не предлагать?...".
А ты язвительный, я смотрю. Если покопаться в STL, то там есть установленные вместе со средой программирования cpp.-файлы. Далее в книгах описывающих создание приложений пишут, что при добавлении какого-либо h.-файла из STL компилятор собирает тысячи строк кода. Если руководствоваться твоей логикой, то при нескольких десятков классов, используемых повсеместно, необходимо будет добавить столько же cpp.-файлов?! Не верю!!! Хоть и любитель в программировании.
Пусть ты прав. Существует несколько десятков классов. К этим классам уже есть объектные модули. Они находятся в той же папки, что и h.-файлы. Что нужно изменить в проекте(используя только меню Microsoft Visual Studio - там есть куча опций), чтобы связывание происходило нормально? Только я хочу добавить один h.-файл, куда включены все библиотечные классы и использовать меню Microsoft Visual Studio. Хочу избавиться от изнурительной работы: добавлять кучу cpp.-файлов или obj.-файлов. Понял? Если знаешь и подскажешь, то огромное тебе спасибо.
Maksim_27_10 вне форума Ответить с цитированием
Старый 19.04.2010, 15:54   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Читайте внимательней.
Цитата:
Сообщение от netrino
Если так не хочется .cpp файл добавлять, можете скомпилировать его заранее и добавить .obj-файл, или .lib-файл(если это библиотека объектных файлов) в список входных файлов для компоновщика.
компилируете все .cpp библиотеки в .lib и добавляйте только её на вход компоновщику.
netrino вне форума Ответить с цитированием
Старый 19.04.2010, 21:02   #5
Maksim_27_10
 
Регистрация: 15.04.2010
Сообщений: 7
По умолчанию

Для Netrino(привык имена писать с большой буквы, ты извини если что).
Ты меня так и не понял. Если предлагаешь всё скомпилировать и засунуть в lib.-файл, то опиши, как ты это сделаешь(конечно, если хочешь). Так, чтобы человек с улицы пришёл и всё понял.
Но я настаиваю на своём. Хочу, чтобы мне объяснили как сделать так, чтобы всё работало, но не создавать obj.-файлы или lib.-файл. Вот пример, который должен понять каждый программист. Этот пример, на мой взгляд, демонстрирует поставленный выше вопрос. Также этот пример реализован на высочайшем уровне разработчиками языка C++(не код, а идея). Код, который демонстрирует указанную выше идею:

#include <iostream>

int main( )
{
char *pause = “PAUSE”;
int *arraY;

arraY = new int[100]; // Здесь стоит точка останова.

delete [] arraY

std::system( pause );
return( 0 );
}

Дальше нажимаем шаг внутрь и проходим путь указанный ниже(иду просто наобум для иллюстрации того, что STL собирается «на ходу»,на мой взгляд). Если STL заранее скомпилирована и я ошибся, то зачем распространяют эти файлы, ведь разработчики всегда стараются скрыть свой код от посторонних глаз? newaop.cpp->
new.cpp->dbgmalloc.c->dbheap.c->mlock.c. Дальше не смог пройти. И это только
один вызов new!!! То есть эти файлы подключаются к каждому проекту незаметно для программиста. Из этого можно сделать вывод, что библиотека созданная программистом должна похожим образом подключаться к проекту, но не скрытно, а с помощью меню(свойств проекта). Если я в чём-то ошибся, то прошу указать, где именно. А кто уловил мою идею и знает, как это реализовать в Microsoft Visual Studio 2008, то прошу описать это подробно. Заранее благодарен.
Maksim_27_10 вне форума Ответить с цитированием
Старый 19.04.2010, 21:23   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Если STL заранее скомпилирована и я ошибся, то зачем распространяют эти файлы, ведь разработчики всегда стараются скрыть свой код от посторонних глаз? newaop.cpp->
1. исходники stl (даже в студии) открыты
2. при работе с дебаг версией в объектный файл помещается инфа о исходном коде (в gcc например исходный код просто встраивается в obj файл для работы с отладчиками). поэтому ты и видишь этот код.
3. тебе уже несколько раз сказали, файлы с исходным кодом нужно предварительно откомпилировать, потом подключать к проекту, не важно в каком виде (lib, obj). (имею ввиду чтобы слинковать конечное приложение, все файлы с кодом должны быть откомпилированы)

все твои беды от преждевременного использования ide
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 19.04.2010 в 21:55.
pproger вне форума Ответить с цитированием
Старый 20.04.2010, 21:10   #7
Maksim_27_10
 
Регистрация: 15.04.2010
Сообщений: 7
По умолчанию

Как сделать lib.-файл в Microsoft Visual Studio 2008? Какие-нибудь книги по описанию этой программы имеются? Это(Project->Properties->Configuration Properties->Linker->General->Additional Library Directories) зачем ?
Maksim_27_10 вне форума Ответить с цитированием
Старый 20.04.2010, 21:29   #8
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Maksim_27_10 Посмотреть сообщение
Как сделать lib.-файл в Microsoft Visual Studio 2008?
File->New Project->Empty Project
Добавить все .cpp файлы
Alt+F7 -> General -> Configuration Type -> Static library (.lib)
netrino вне форума Ответить с цитированием
Старый 21.04.2010, 20:40   #9
Maksim_27_10
 
Регистрация: 15.04.2010
Сообщений: 7
По умолчанию

Спасибо за совет.
Maksim_27_10 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение столбцов Annsepa Microsoft Office Excel 5 21.02.2010 15:54
разделение текста PetrovS Microsoft Office Excel 6 03.01.2010 23:24
разделение программы world12_tk Помощь студентам 2 30.03.2009 20:05
Разделение файла Antik163RUS Помощь студентам 9 01.07.2008 12:23