Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 351
#1

Подключение файлов obj - C++

09.11.2013, 11:16. Просмотров 1118. Ответов 20
Метки нет (Все метки)

Здравствуйте!

Мне очень интересно следующее: допустим есть программа, в которой есть 3 файла (1: main.cpp, 2: class.h, 3: class.cpp) мы их откомпилировали и все хорошо... Но через какое-то время необходимо внести изменения в main.cpp, при этом class.cpp и class.h остаются нетронутыми. Так как же скомпилировать отдельно main.cpp подключив class.h, class.cpp в формате obj и чтобы в итоге получился один exe?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2013, 11:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подключение файлов obj (C++):

Подключение фортрановских файлов в формате OBJ - C++
Здравствуйте, подскажите пожалуйста как подключить файл .obj фортрановский, в консольном приложении на C++ в среде VS2010? При простом...

как overload ++OBJ и --OBJ - C++
как overload ++OBJ и --OBJ

Подключение заголовочных файлов и файлов реализации - C++
Здравствуйте,при создании класса в visual studio руками не компилится проект,при создании через add class все работает,для примера написал...

Подключение файлов - C++
Как правильно соединить такие 3 файла: main_doc.cpp (файл с главной функцией, с которого все собственно и начинается) gamer.cpp(файл с...

Подключение файлов - C++
Здраствуйте! Проблема заключается в том, что при чтении файла формата .txt файл читает но вместо текста : Congratulations you did it ...

Подключение заголовочных файлов - C++
Итересует меня вопрос : нужно ли при компиляции программ оставлять только нужные хэдеры ? т.е. их минимальное кол-во для корректной...

20
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
09.11.2013, 11:18 #2
многие IDE сами контролируют что нужно компилировать, а что нет.
Можно соорудить makefile, например
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.11.2013, 11:39 #3
Цитата Сообщение от BESSON_off Посмотреть сообщение
Так как же скомпилировать отдельно main.cpp подключив class.h, class.cpp в формате obj и чтобы в итоге получился один exe?
взять откомпилировать только main и затем слинковать
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 351
09.11.2013, 13:06  [ТС] #4
Цитата Сообщение от Jupiter Посмотреть сообщение
Взять откомпилировать
Если начинаю отдельно компилировать, то компилятор ругается, что не знает тип (класс ведь не подключен).
Цитата Сообщение от Jupiter Посмотреть сообщение
затем слинковать
Можно пошагово описать как это сделать?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.11.2013, 14:04 #5
для gcc/mingw
код
C++
1
2
3
4
5
6
7
//main.cpp
#include "myclass.h"
 
int main()
{
    myclass c;
}
C++
1
2
3
4
5
6
7
8
//myclass.h
#pragma once
 
class myclass
{
public:
    myclass();
};
C++
1
2
3
4
5
6
7
8
//myclass.cpp
#include "myclass.h"
#include <iostream>
 
myclass::myclass()
{
    std::cout << "myclass" << std::endl;
}

компилим: g++ -c main.cpp myclass.cpp
линкуем: g++ main.o myclass.o
вносим изменения в main.cpp:
main.cpp
C++
1
2
3
4
5
6
7
8
//main.cpp
#include "myclass.h"
 
int main()
{
    myclass c;
    myclass d;
}

компилим: g++ -c main.cpp
линкуем: g++ main.o myclass.o

на других компиляторах принцип аналогичный
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 351
09.11.2013, 19:37  [ТС] #6
А если это через MVS2012 делать, то как?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
09.11.2013, 19:38 #7
Цитата Сообщение от BESSON_off Посмотреть сообщение
А если это через MVS2012 делать, то как?
она сама определит что нужно компилировать, а что нет.
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 351
09.11.2013, 19:55  [ТС] #8
То есть, в MVS, если в папке проекта лежит объектный файл, входящий в программу без изменений, то при очередной компиляции он подключается и перекомпилировки его не происходит?
0
palva
2654 / 1881 / 275
Регистрация: 08.06.2007
Сообщений: 7,219
Записей в блоге: 4
09.11.2013, 21:40 #9
Вы правильно понимаете. Но у вас есть возможность подключить к проекту obj-файл (или lib-файл) непосредственно. В этом случае вы вообще не обязаны иметь исходники. Правой кнопкой по проекту Add... Existing Item

Добавлено через 51 секунду
Цитата Сообщение от BESSON_off Посмотреть сообщение
если в папке проекта лежит объектный файл
Здесь будет даже не важно, где лежит этот объектный файл.
1
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 351
13.11.2013, 15:33  [ТС] #10
Вот за это отдельное спасибо!
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 351
16.11.2013, 07:35  [ТС] #11
Добавил файлы, как было описано выше, но теперь встал вопрос как сделать так, чтобы в основной программе они определялись? В файле "Class1.obj" объявление класса, а в файле "Body.obj" его определение. Класс называется "Cat" (см. картинку).
P.S. Правильно заинклудил obj?
0
Миниатюры
Подключение файлов obj  
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.11.2013, 12:46 #12
Цитата Сообщение от BESSON_off Посмотреть сообщение
P.S. Правильно заинклудил obj
Мачете не курит obj не инклудят
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 351
16.11.2013, 13:08  [ТС] #13
А что нужно сделать, чтобы использовать функции из объектного файла?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.11.2013, 13:27 #14
добавить obj файл в процесс линковки.
интуитивно понятно что для это наго открыть опции линковки.
интуитивно понятно что опции линковки находятся в опциях проекта.
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 351
16.11.2013, 13:52  [ТС] #15
Уважаемый человек, подскажи пожалуйста пошагово что делать... у меня MVS2012
0
16.11.2013, 13:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2013, 13:52
Привет! Вот еще темы с ответами:

Подключение заголовочных файлов - C++
Начал изучать С++, скачал несколько книг и заметил что в одних при включении заголовочных файлов (например iostream.h) используется запись:...

Подключение сторонних файлов - C++
Добрый день! Я новичок в С++ и программировании вообще. Если мой вопрос покажется идиотским, все таки хоть как то объясните. Я изучаю С++...

Подключение заголовочных файлов - C++
Имею два файла Large Factorial.h #include &lt;sstream&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;math.h&gt; #include...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru