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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2019, 11:21   #1
pucher
Пользователь
 
Регистрация: 06.01.2019
Сообщений: 13
По умолчанию c++ не видит stdafx.h, хотя он есть

Мне достались исходники небольшого проекта из нескольких файлов. При открытии его в visual studio еще до начала компиляции в редакторе кода в каждом файле подчеркивается строка
Код:
#include "stdafx.h"
Пишет:
Цитата:
cannot open source file "stdafx.h"
Сами файлы stdafx.h и stdafx.cpp присутствуют в директории проекта.
1. Как решить проблему?
2. Может ли эта проблема возникать из-за того, например, что проект был сделал в одной версии vs, а я открываю его в другой? Если да, как узнать исходную версию студии? Доступа к разработчикам проекта у меня нету. Спасибо.
pucher вне форума Ответить с цитированием
Старый 06.01.2019, 16:59   #2
webvsoft
Форумчанин
 
Регистрация: 25.08.2018
Сообщений: 125
По умолчанию

Встречалось такое решение:
замените #include "stdafx.h" на #include "pch.h", которое является обновленным именем для предварительно скомпилированных заголовков.
Невозможно предугадать поведение интеллекта, превосходящего человеческий
webvsoft вне форума Ответить с цитированием
Старый 06.01.2019, 18:15   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Чтобы это срабатало, надо будет и в проекте поменять.
p51x вне форума Ответить с цитированием
Старый 06.01.2019, 22:31   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от pucher Посмотреть сообщение
Мне достались исходники небольшого проекта из нескольких файлов.
сделай сборку.
если не соберется - выкладывай весь проект в архиве (.zip/.7z)
_Bers вне форума Ответить с цитированием
Старый 07.01.2019, 12:05   #5
pucher
Пользователь
 
Регистрация: 06.01.2019
Сообщений: 13
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
сделай сборку.
если не соберется - выкладывай весь проект в архиве (.zip/.7z)
Немного запутался. Создал приложение console application, D:\Pr1.
В D:\Pr1\Pr1\ появились stdafx.h и Pr1.cpp. В Pr1.cpp есть строка
Код:
#include "stdafx.h"
Все компилируется.
В ту же папку добавляю sec.cpp и sec.h. В эти файлы добавляю
Код:
#include "stdafx.h"
Все компилируется.
Создаю в папке проекта поддиректорию D:\Pr1\Pr1\dir и перемещаю туда файлы sec.cpp и sec.h. Строка
Код:
#include "stdafx.h"
в этих файлах подчеркивается. Заменяю на
Код:
#include "D:\Pr1\Pr1\stdafx.h"
подчеркивание исчезает. Но, при компиляции появляется ошибка
Цитата:
Error 2 error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source? d:\pr1\pr1\dir\sec.cpp 2 1 Pr1
Что делать?
Вложения
Тип файла: rar Pr1.rar (1.49 Мб, 9 просмотров)
pucher вне форума Ответить с цитированием
Старый 07.01.2019, 12:20   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А ../stdafx.h не работает?
Или <stdafx.h>?

Или используйте Force include files в настройках.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 07.01.2019, 12:26   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от pucher Посмотреть сообщение
в этих файлах подчеркивается
Да неужели... Вы переместили файлы в другую папку и относительный путь не находит файл... Ха-ха 3 раза.

Либо, как уже сказали, правьте путь ../stdafx.h, либо добавьте в инклуд директории папку с stdafx.h
p51x вне форума Ответить с цитированием
Старый 07.01.2019, 12:35   #8
pucher
Пользователь
 
Регистрация: 06.01.2019
Сообщений: 13
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Либо, как уже сказали, правьте путь ../stdafx.h, либо добавьте в инклуд директории папку с stdafx.h
Ни ../stdafx.h, ни ..\stdafx.h не помогает.
Ни #include "D:\\Pr1\\Pr1\\stdafx.h"
Ни #include "D:/Pr1/Pr1/stdafx.h" тоже нет.

Заработало только #include "stdafx.h" при условии указания директории в свойствах проекта.
Но, я хочу понять, почему указание полного и относительного пути не работает в данном случае.

Последний раз редактировалось pucher; 07.01.2019 в 13:20.
pucher вне форума Ответить с цитированием
Старый 07.01.2019, 14:08   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вообщем так. Для предкомпиленного заголовка stdafx.h, студия требует полного совпадения инклуда с
Код:
#include "stdafx.h"
Так что, да, остаются настройки.
p51x вне форума Ответить с цитированием
Старый 07.01.2019, 14:18   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вообще у stdafx.h в Force include files вроде ж нет особых недостатков.
Сделали б уже давно по умолчанию так при включении PCH.

Как QMake.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не видит таблицу, хотя она есть tronuo Java Базы данных (JDBC, JPA, Hibernate) 0 07.06.2015 19:18
visual studio не видит заголовочный файл, хотя он есть (fatal error C1083: Cannot open include file: 'GL/glut.h': No such file or sersheg Помощь студентам 0 21.10.2013 13:04
поле не найдено в таблице, хотя оно есть Threefire БД в Delphi 6 22.09.2012 17:51
php Undefined variable, хотя она есть Dominatorsha PHP 1 31.07.2012 16:05
Интерестно а есть ли здесь хотя-бы бывшие медики vasek123 Свободное общение 12 09.06.2009 14:29