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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
#1

Как сделать доступными функции из другого проекта инклудом .h файла - C++

05.11.2013, 11:40. Просмотров 2263. Ответов 7
Метки нет (Все метки)

В одном решении Visual Studio 2010 есть два проекта, мне понадобилось включить функции и глобальные переменные из проекта №1 в проекта №2 .

Во втором проекте сделал просто инклуд .h файла с прототипами нужных функций
C++
1
#include "../PUT_do_proekta№1/main.h"
В результате получил ошибки типа
error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl gws_vars(void)" (?gws_vars@@YAXXZ)

А если сделать
C++
1
#include "../PUT_do_proekta№1/main.сpp"
То все ок.

В первом же проекте когда делаю инклуд с нужными функциями

C++
1
#include “main.h"
То все ок, а если
C++
1
#include “main.сpp"
, то лезут ошибки.

Почему такие ошибки во втором проекте ?
Всегда думал что достаточно включить просто .h файл в котором есть прототипы функций и все эти функции станут доступны.

Может конечно дело в том что второй проект физически находится в другой папке, но я же указываю полный путь до нужного .h файла.

Хотелось бы чтобы во второй проект достаточно было бы включать только .h файл, можно ли такое сделать ? может в настройках Visual Studio 2010 для второго проекта что то нужно прописать ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2013, 11:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать доступными функции из другого проекта инклудом .h файла (C++):

Как в среде Dev-C++ сделать доступными технологии OpenMP? - C++
Доброго времени суток. Среда разработки: Dev-C++ 5.7.1 Полагаю, нужно параметры компилятора как-то изменить, но не знаю, как. ...

Как сделать компоненты базового класса доступными в производном классе, но недоступными вне классов? - C++
Как сделать компоненты базового класса доступными в производном классе, но недоступными вне классов?

Как подключить объектный файл из другого проекта? - C++
Привет всем! Есть 2 проекта в одном решении (на самом деле их больше, но не суть) Каждый проект при сборке создает свой исполняемый...

Подключение функции из другого файла - C++
Есть три файла: main.cpp, view.cpp, view.hpp. #include "view.hpp" int main() { draw();

Вызов функции из другого файла. - C++
Всем привет!) У меня такой вопрос ,допустим есть main.cpp , и есть der.cpp .В der.cpp есть функция getfr() ,так вот как мне из ...

Вызов функции из другого файла - C++
Знаю этот вопрос, задавался не раз(возможно), но поиск показал одну тему в которой, небыло дано ясного ответа... Так вот в чем вопрос:...

7
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
05.11.2013, 15:27 #2
Цитата Сообщение от nill Посмотреть сообщение
Почему такие ошибки во втором проекте ?
потому что вы имеете ф-цию мэйн определенную 2 раза
Цитата Сообщение от nill Посмотреть сообщение
Всегда думал что достаточно включить просто .h файл в котором есть прототипы функций и все эти функции станут доступны.
недостаточно, еще необходима их реализация, или включите либфайл из скомпилированного проекта(того проекта откуда нужны ф-ции) или пропишите в настройках проекта путь к cpp фалу с реализациями данных ф-ций
1
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,534
Завершенные тесты: 1
05.11.2013, 15:54 #3
А еще для общего развития можно почитать про разницу между
C++
1
#include “main.сpp"
и
C++
1
#include <main.сpp>
0
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
06.11.2013, 13:31  [ТС] #4
aLarman,
или пропишите в настройках проекта путь к cpp фалу с реализациями данных ф-ций
А где это найти в VS2010 ?

Добавлено через 1 час 44 минуты
В общем для второго проекта сделал так
1) project->properties->configuration properties-> c/c++ ->general->additional include directories добавил папку с файлами из первого проекта чтобы не прописывать каждый раз полный путь

2) Добавил в проект файл main.сpp с функцией из меню Добавить существующий файл

3) После чего делаю #include “main.h" в нужные срр файлы второго проекта и вроде все рабоает

Прокомментируйте плз все правильно сделал ? требование одно чем проще тем лучше

Добавлено через 19 часов 47 минут
ну скажите плз так или нет все сделал чтобы я был спокоен ?
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,065
Завершенные тесты: 1
06.11.2013, 13:39 #5
вообще по-хорошему надо добавить cpp с нужными данными из одного проекта к другому(добавить в сам проект уже сужествующие CPP) или делать статическую библиотеку

Добавлено через 4 минуты
Цитата Сообщение от nill Посмотреть сообщение
2) Добавил в проект файл main.сpp с функцией из меню Добавить существующий файл
3) После чего делаю #include “main.h" в нужные срр файлы второго проекта и вроде все рабоает
по сути так и нужно если main.cpp и есть тот файл с необходимыми функциями
1
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
07.11.2013, 11:05  [ТС] #6
Raali,

А такой еще вопрос, допустим файл реализации с функциями из другого проекта содержит .h файлы того проекта, то мне их тоже надо включать во второй проект через меню Добавить существующий файл или просто в свойствах проекта прописать дополнительный путь для директивы include и все ?

И допустим мне надо передать кому то второй проект физически, то как можно это сделать чтобы не передавать первый, как то можно скопирповать не в ручную все файлы реализации с функциями которые включены в проект ?
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,065
Завершенные тесты: 1
07.11.2013, 12:05 #7
Цитата Сообщение от nill Посмотреть сообщение
А такой еще вопрос, допустим файл реализации с функциями из другого проекта содержит .h файлы того проекта, то мне их тоже надо включать во второй проект через меню Добавить существующий файл или просто в свойствах проекта прописать дополнительный путь для директивы include и все ?
можно просто путь прописать и включать через #include <>
Цитата Сообщение от nill Посмотреть сообщение
И допустим мне надо передать кому то второй проект физически, то как можно это сделать чтобы не передавать первый, как то можно скопирповать не в ручную все файлы реализации с функциями которые включены в проект ?
обычно зависимости всегда таскают рядом) можно создать .lib файл первого и передавать только header'ы
1
nill
10 / 10 / 0
Регистрация: 16.08.2009
Сообщений: 417
07.11.2013, 12:59  [ТС] #8
Raali,
обычно зависимости всегда таскают рядом)
Таскают рядом это как ?
.сpp и .h файлы которые используются в нескольких проектах кладут в одну физическую папку ?
0
07.11.2013, 12:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2013, 12:59
Привет! Вот еще темы с ответами:

вызов функции из другого файла - C++
мне необходимо вызвать функцию из другого файла (функция заполнения бинарного файла структурой, в будущем будет еще много функций) но...

Вызов функции из другого файла - C++
Ребят! Привет! Я новый на этом форуме. Мне стало интересно как заставить программу перейти с одного кода (после выполнения) на другой (не...

Использоваение static функции из другого файла - C++
Всем добра! мне дали файл cmd.cpp с функцией: static void matchCommandParameters(int argc, char **argv, int * v, int * u, int *...

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


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

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

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