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

Несколько *.cpp в одном проекте - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Trukhanov_VP
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
30.07.2013, 14:01     Несколько *.cpp в одном проекте #1
Добрый день! В приложении требуется несколько *.cpp как выполнить код каждой *.cpp ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
30.07.2013, 14:14     Несколько *.cpp в одном проекте #2
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
В приложении требуется несколько *.cpp
Первый и основной вопрос - зачем?
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
как выполнить код каждой *.cpp ?
В каждом .cpp должен быть подключен через #include свой .h. Так же все .h должны быть подключены в вызывающем модуле.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
30.07.2013, 14:21     Несколько *.cpp в одном проекте #3
Упрощенно каждый cpp файл можно считать единицей трансляции (это подсказка для гугления ).
Тут немного обсуждалось: Перенос в другую единицу трансляции

И совершенно не обязательно у каждого cpp должен быть свой хедер.
iel
1 / 1 / 0
Регистрация: 30.07.2013
Сообщений: 15
30.07.2013, 17:12     Несколько *.cpp в одном проекте #4
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
как выполнить код каждой *.cpp ?
Никак. Вопрос некорректен. "*.cpp" при правильном содержании можно скомпилировать в объектный файл (машинный код), а один или более объектных файлов можно скомпоновать в один исполняемый файл, указав компоновщику с какого места (процедуры) в этой куче начать исполнение.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2013, 17:18     Несколько *.cpp в одном проекте #5
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
Добрый день! В приложении требуется несколько *.cpp как выполнить код каждой *.cpp ?
Должны быть включены в проект и находиться в папке проекта.
iel
1 / 1 / 0
Регистрация: 30.07.2013
Сообщений: 15
30.07.2013, 17:40     Несколько *.cpp в одном проекте #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Должны быть включены в проект и находиться в папке проекта.
Ошибка начинающих программистов в том, что используют усложняющую Студию/другую IDE для "Hello World!" вместо батника для сборки. Зачем эти заморочки? Не проще сделать что-то типа:
Bash
1
2
cl.exe /c *.cpp
link.exe /out:some.exe *.obj kernel32.lib
Вообще Студия только для написания и редкого дебага нужна, ковыряться в менюшках чтобы настроить сборку - мазохизм.
alsav22
30.07.2013, 17:58
  #7

Не по теме:

Цитата Сообщение от iel Посмотреть сообщение
Не проще сделать что-то типа:
Для начинающего? Моё мнение, что не проще. У других, наверное, может быть другое мнение. Споры об этом порядком надоели и не имеют никакого смысла. ТС не уточнил в чём он программирует, приходится додумывать.

Trukhanov_VP
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
31.07.2013, 08:48  [ТС]     Несколько *.cpp в одном проекте #8
Я начал работать в студии совсем недавно. Я конечно взял учебник и по шагам разобрал типовые простенькие примерчики, а вот когда требуется работать с winapi, с вызовом dll (причем не одной) и проектами в которых по 2 и более "*.срр" то становится сложновато для новичка-разработчика данной среды..
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
31.07.2013, 09:10     Несколько *.cpp в одном проекте #9
Trukhanov_VP, да WinAPI с dll вообще и не для новичка тоже не просто.
У вас какие-нибудь конкретные вопросы есть? Типа "я вот так вот подключаю то-то и то-то, для того-то и для того-то. Подключаю вот таким вот образом. Выдает следующие ошибки."? Или вы так, в общем рассуждаете о теории модульного программирования?
Trukhanov_VP
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
31.07.2013, 09:39  [ТС]     Несколько *.cpp в одном проекте #10
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Trukhanov_VP, да WinAPI с dll вообще и не для новичка тоже не просто.
У вас какие-нибудь конкретные вопросы есть? Типа "я вот так вот подключаю то-то и то-то, для того-то и для того-то. Подключаю вот таким вот образом. Выдает следующие ошибки."? Или вы так, в общем рассуждаете о теории модульного программирования?
Если быть точным то работаю я с winscard.dll. С winscard.dll я работал в Delphi, работал с картами ACOS, все получилось, молодец. А сейчас работаю с картами EMV. Обычной winscard.dll не хватило и пришлось запросить библиотеки. Прислали мне dll, внутри которых описаны функции winscard.dll и других dll( я не очень понял как это воспринять, но сложилось такое чувство, что dll составные что ли).
Вот кусок dll которую мне прислали: SCardConnectA E SCardStatusA
SCardEstablishContext  SCardCancel G SCardTransmit : SCardReconnect SCardDisconnect < SCardReleaseContext WinSCard.dll  cmnMemCopy  cmnMemSet  bin2hex HAL_Common.dll  protWriteEx HAL_Protocol.dll (memcpy ,memset MSVCR110.dll K_crt_debugger_hook Є__crtUnhandledException ©__crtTerminateProcess s__CppXcptFilter _amsg_exit дfree Ќ_malloc_crt ю_initterm я_initterm_e |_lock ж_unlock +_calloc_crt ¬__dllonexit "_onexit ђ__clean_type_info_names_internal p_except_handler4_common ѓIsDebuggerPresent €IsProcessorFeaturePresent <EncodePointer DecodePointer <QueryPerformanceCounter $GetCurrentProcessId (GetCurrentThreadId фGetSystemTimeAsFileTime .DisableThreadLibraryCalls KERNEL32.dll HAL_SCReader.dll crAPDU crCloseSession crDeinit crInit crOpenSession


Так вот, так же имеется пример реализации(использования dll которую я получил), но подключив dll к проекту, у меня Студия ругается на функции ScardconnectA и т.д. которые есть в "*.с", но нигде не описаны, LNK1120 неразрешенный внешний символ.
Описаны в Хэдере и экспортируются в "*.def" только: crAPDU crCloseSession crDeinit crInit crOpenSession. Я проверял наличие функции через программу, которая выводит список функции dll, там были только crAPDU crCloseSession crDeinit crInit crOpenSession.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
31.07.2013, 09:54     Несколько *.cpp в одном проекте #11
А у вас и так не получится посмотреть реализацию dll. В том ее и суть. Вам доступны только названия методов, описанных в ней. Если студия ругается, то скорее всего требуемой функции там и нет.
Но только я никак не пойму при чем тут dll и "*.c"?
Trukhanov_VP
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
31.07.2013, 10:01  [ТС]     Несколько *.cpp в одном проекте #12
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Но только я никак не пойму при чем тут dll и "*.c"?
Это я Вам обший вид проблемы изложил, которую пытаюсь решить более двух недель и задаю различные вопросы по мере возникновения

Добавлено через 4 минуты
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А у вас и так не получится посмотреть реализацию dll
Тогда зачем вообще создавать какие-то "нерабочие" проекты и впихивать их в SDK. Можно было простой справкой обойтись, в которой описать методы, функции, струкруты и т.п.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
31.07.2013, 10:17     Несколько *.cpp в одном проекте #13
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
Это я Вам обший вид проблемы изложил, которую пытаюсь решить более двух недель
То есть -
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
В приложении требуется несколько *.cpp как выполнить код каждой *.cpp ?
Вы выполнили все рекомендации, но все равно не можете сочленить несколько файлов, так? какие конкретно ошибки? Прям по пунктам: "Я делаю так-то так-то. Ругается вот так вот. Не получается вот такой момент."

Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
Тогда зачем вообще создавать какие-то "нерабочие" проекты
Они рабочие. Я говорю за то, что до реализации библиотечных функций вы не доберетесь. А до описания пожалуйста. Список найти можно, а как они работают - дудки.

Не по теме:

Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
и задаю различные вопросы по мере возникновения
5.16

iel
1 / 1 / 0
Регистрация: 30.07.2013
Сообщений: 15
31.07.2013, 11:19     Несколько *.cpp в одном проекте #14
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
Если быть точным то работаю я с winscard.dll. С winscard.dll я работал в Delphi, работал с картами ACOS, все получилось, молодец. А сейчас работаю с картами EMV. Обычной winscard.dll не хватило и пришлось запросить библиотеки. Прислали мне dll, внутри которых описаны функции winscard.dll и других dll( я не очень понял как это воспринять, но сложилось такое чувство, что dll составные что ли).
Вот кусок dll которую мне прислали: SCardConnectA E SCardStatusA
SCardEstablishContext  SCardCancel G SCardTransmit : SCardReconnect SCardDisconnect < SCardReleaseContext WinSCard.dll  cmnMemCopy  cmnMemSet  bin2hex HAL_Common.dll  protWriteEx HAL_Protocol.dll (memcpy ,memset MSVCR110.dll K_crt_debugger_hook Є__crtUnhandledException ©__crtTerminateProcess s__CppXcptFilter _amsg_exit дfree Ќ_malloc_crt ю_initterm я_initterm_e |_lock ж_unlock +_calloc_crt ¬__dllonexit "_onexit ђ__clean_type_info_names_internal p_except_handler4_common ѓIsDebuggerPresent €IsProcessorFeaturePresent <EncodePointer DecodePointer <QueryPerformanceCounter $GetCurrentProcessId (GetCurrentThreadId фGetSystemTimeAsFileTime .DisableThreadLibraryCalls KERNEL32.dll HAL_SCReader.dll crAPDU crCloseSession crDeinit crInit crOpenSession


Так вот, так же имеется пример реализации(использования dll которую я получил), но подключив dll к проекту, у меня Студия ругается на функции ScardconnectA и т.д. которые есть в "*.с", но нигде не описаны, LNK1120 неразрешенный внешний символ.
Описаны в Хэдере и экспортируются в "*.def" только: crAPDU crCloseSession crDeinit crInit crOpenSession. Я проверял наличие функции через программу, которая выводит список функции dll, там были только crAPDU crCloseSession crDeinit crInit crOpenSession.
Bash
1
dumpbin.exe /EXPORTS winscard.dll
Ищем в списке нужную функцию, добавляем её правильно в winscard.def, потом
Bash
1
lib.exe /DEF:winscard.def /OUT:winscard.lib
и добавляем winscard.lib к компоновщику в настройках проекта
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
31.07.2013, 11:31     Несколько *.cpp в одном проекте #15
Цитата Сообщение от SatanaXIII Посмотреть сообщение
В каждом .cpp должен быть подключен через #include свой .h. Так же все .h должны быть подключены в вызывающем модуле.
Строго говоря, это необязательно. Можно обойтись и без заголовочных файлов, если вручную объявить прототипы функций и используемые структуры в соответствующих единицах трансляции. Хотя, конечно, это дико неудобно (так как, по сути, мы делаем за препроцессор его работу), и никто так не делает.
Trukhanov_VP
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
31.07.2013, 12:20  [ТС]     Несколько *.cpp в одном проекте #16
Цитата Сообщение от iel Посмотреть сообщение
в winscard.def
у меня в проекте уже есть HAl_SCreader.def, в котором я экспортирую функции из другой HAl_SCreader.dll. И выходит так что функции winscard.dll используются в тексте "*.срр" во время выполнения экспортируемых функций HAl_SCreader.dll.
И кстати о либах, у HAl_SCreader.dll нету lib-ки.
iel
1 / 1 / 0
Регистрация: 30.07.2013
Сообщений: 15
01.08.2013, 12:42     Несколько *.cpp в одном проекте #17
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
у меня в проекте уже есть HAl_SCreader.def, в котором я экспортирую функции из другой HAl_SCreader.dll. И выходит так что функции winscard.dll используются в тексте "*.срр" во время выполнения экспортируемых функций HAl_SCreader.dll.
И кстати о либах, у HAl_SCreader.dll нету lib-ки.
У вас каша в голове. Я и так и не понял при чём тут "HAl_SCreader.dll". Речь шла про winscard.dll и что у вас вызывается функция из winscard.dll. Сделайте как я выше показал и линкуйте на здоровье - компоновщик просто не знает про существование winscard.dll.
И вообще выложите полностью лог с ошибками с компоновщика и dumpbin обеих DLL.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2013, 16:10     Несколько *.cpp в одном проекте
Еще ссылки по теме:

C++ Использование функции cpp в проекте c
Два файла .cpp в проекте C++
C++ Несколько cpp файлов в проекте

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

Или воспользуйтесь поиском по форуму:
Trukhanov_VP
01.08.2013, 16:10  [ТС]     Несколько *.cpp в одном проекте
  #18

Не по теме:

Цитата Сообщение от iel Посмотреть сообщение
У вас каша в голове.
Это точно... %

Yandex
Объявления
01.08.2013, 16:10     Несколько *.cpp в одном проекте
Ответ Создать тему
Опции темы

Текущее время: 06:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru