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

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

Войти
Регистрация
Восстановить пароль
 
 
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
#1

Программа не может открыть файл по полному пути - C++

26.04.2014, 21:18. Просмотров 720. Ответов 25
Метки нет (Все метки)

Есть проект в VS 2012, который работает с библиотекой OpenCV. В коде пишу полный путь к файлу. Все работает и файл открывается программой. Отключаю библиотеку(просто меняю название папки, в которой она находится) и добавляю нужные dll в папку с экзешником. Программа запускается, но файл она не открывает. Что не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 21:18     Программа не может открыть файл по полному пути
Посмотрите здесь:

C++ Открыть существующий текстовый файл и копировать его в новый файл, с заменой всех букв нижнего регистра
Программа вылетает при попытке открыть файл C++
C++ Чем открыть файл cсv файл в текстовом документе?
C++ Не может открыть библиотеку
C++ Открыть файл по заданному пути
C++ Программа не может открыть текстовый файл
Открыть файл, прочитать. Все, что находится после двоеточия перенести в другой файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12878 / 7264 / 810
Регистрация: 27.09.2012
Сообщений: 17,945
Записей в блоге: 2
Завершенные тесты: 1
26.04.2014, 21:29     Программа не может открыть файл по полному пути #2
попробуйте добавить файл в папку с проектом, если запускаете из IDE
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
26.04.2014, 21:39  [ТС]     Программа не может открыть файл по полному пути #3
А какая разница. Будет другой путь, ну и что? Все равно не работает.
И мне надо без IDE.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 01:11     Программа не может открыть файл по полному пути #4
Цитата Сообщение от Chelioss Посмотреть сообщение
Программа запускается, но файл она не открывает. Что не так?
Пишите не полный путь к файлу, и положите файл рядом с .exe.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
27.04.2014, 02:49  [ТС]     Программа не может открыть файл по полному пути #5
Тоже не работает.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 12:25     Программа не может открыть файл по полному пути #6
Добавлено через 11 минут
Цитата Сообщение от Chelioss Посмотреть сообщение
Тоже не работает.
После того, как убрали полный путь в коде, проект пересобирали?

Добавлено через 18 минут
Цитата Сообщение от Chelioss Посмотреть сообщение
Отключаю библиотеку(просто меняю название папки, в которой она находится)
Отключаете от чего? Если этого не делать, а просто добавить dll в папку с exe, то работает?

Добавлено через 1 минуту
Цитата Сообщение от Chelioss Посмотреть сообщение
Программа запускается
Откуда запускаете? Из среды или из папки?

Добавлено через 11 минут
Сейчас проверил. И с полным путём, и с не полным путём всё работает. Что-то не так делаете. Переименование папки с библиотекой вообще никак не должно влиять на запуск, собранного exe, из папки.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
27.04.2014, 14:00  [ТС]     Программа не может открыть файл по полному пути #7
Цитата Сообщение от alsav22 Посмотреть сообщение
После того, как убрали полный путь в коде, проект пересобирали?
да
Цитата Сообщение от alsav22 Посмотреть сообщение
Отключаете от чего? Если этого не делать, а просто добавить dll в папку с exe, то работает?
Эзешнику нужны dll, которые лежат в папке с
Цитата Сообщение от alsav22 Посмотреть сообщение
Переименование папки с библиотекой вообще никак не должно влиять на запуск, собранного exe, из папки.
библиотекой. Если папку переименовать, то программа ругается на то, что отсутствует dll. Мне нужен скинуть программу человеку, но чтобы ему не пришлось ставить эту библиотеку. Если добавить dll к экзешнику в папку, то прога работает, но не открывает файл.
Цитата Сообщение от alsav22 Посмотреть сообщение
Откуда запускаете? Из среды или из папки?
И так и так не работает.
А я говорил, что влияет? Прога запускается, но файл она не открывает. Если библиотеку не трогать, то файл открывается, если библиотеку переименовать, то файл не открывает. Фокус.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 14:16     Программа не может открыть файл по полному пути #8
Цитата Сообщение от Chelioss Посмотреть сообщение
И так и так не работает.
У меня всё работает, у вас не работает. Переименование папки должно влиять, только на сборку проекта. Возможные причины этого фокуса: далаете много дейстий одновременно ("и так, и так"), поэтому отследить, что на что влияет, трудно. Предлагаю такой порядок действий. Убрать в коде полный путь к файлу, файл поместить и в папку проекта, и в папку с exe (что, кстати, собираете? Release или Debug?). Папку с библиотекой не переименовывать. Сделать очистить, перестроить (именно, перестроить: F7 + Ctrl + Alt). Из студии не запускать. Зайти в папку проекта и посмотреть, чтобы время изменения exe совпадало с временем перестройки. Запустить exe из папки. Если будет работать, то переименовать папку (чисто для проверки), и опять запустить exe из папки.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
27.04.2014, 15:29  [ТС]     Программа не может открыть файл по полному пути #9
Цитата Сообщение от alsav22 Посмотреть сообщение
Переименование папки должно влиять, только на сборку проекта.
В папку с библиотекой лежат dll, которые требуются для работы программы, а не только для ее сборки. Хотя я и не вижу связи между dll и путем к файлу.
Цитата Сообщение от alsav22 Посмотреть сообщение
что, кстати, собираете? Release или Debug?
Debug
Цитата Сообщение от alsav22 Посмотреть сообщение
Если будет работать, то переименовать папку (чисто для проверки), и опять запустить exe из папки.
Тоже самое. Не работает.

Все таки додумался в чем проблема. Проблема в DLL. EXE просил только 3 dll, но этого не хватало для открытия файлов. Я добавил все dll из библиотеки в папку с exe и заработало.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 15:36     Программа не может открыть файл по полному пути #10
Цитата Сообщение от Chelioss Посмотреть сообщение
Я добавил все dll из библиотеки в папку с exe и заработало.
Я сразу все добавлял, поэтому у меня и работало. Непоятно только, как переименование папки на это влияло? Путь к dll где-то в path прописан?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
27.04.2014, 15:41  [ТС]     Программа не может открыть файл по полному пути #11
Цитата Сообщение от alsav22 Посмотреть сообщение
Я сразу все добавлял, поэтому у меня и работало. Непоятно только, как переименование папки на это влияло? Путь к dll где-то в path прописан?
Путь к dll наверно зашит в exe.
Для открытия файла прога использует одну dll, которая есть в папке библиотекой, но нет в папке с exe. Т.е. прога запускается без этой dll, но открыть не может. Если закрыть доступ к библиотеке, то проге не хватает этой dll. Добавил эту dll в папке с exe и теперь файл открывается.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 15:51     Программа не может открыть файл по полному пути #12
Цитата Сообщение от Chelioss Посмотреть сообщение
Путь к dll наверно зашит в exe.
Нет, так не бывает. При создании dll никто не знает, где будет находиться папака с dll. Если нужная dll не находится рядом с exe, то она ищется в path. А раз у вас без всех dll, но без изменеия папки, работало, то значит где-то, что-то прописано.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
27.04.2014, 16:02  [ТС]     Программа не может открыть файл по полному пути #13
Цитата Сообщение от alsav22 Посмотреть сообщение
Нет, так не бывает. При создании dll никто не знает, где будет находиться папака с dll. Если нужная dll не находится рядом с exe, то она ищется в path. А раз у вас без всех dll, но без изменеия папки, работало, то значит где-то, что-то прописано.
Да, прописано в свойствах проекта, а потом после компиляции и в exe. Вроде так. Я про создание dll не говорил.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 16:14     Программа не может открыть файл по полному пути #14
Цитата Сообщение от Chelioss Посмотреть сообщение
Я про создание dll не говорил.
Да, это я не то написал, прошу прощения.
Цитата Сообщение от Chelioss Посмотреть сообщение
Да, прописано в свойствах проекта
Вы, в свойствах проекта, прописывали путь к dll?
Цитата Сообщение от Chelioss Посмотреть сообщение
а потом после компиляции и в exe. Вроде так.
Цитата Сообщение от Chelioss Посмотреть сообщение
Путь к dll наверно зашит в exe.
Тогда без любых dll, в папке с exe, работало бы. Однако не работает, значит никаких путей к dll в exe нет.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
27.04.2014, 16:19  [ТС]     Программа не может открыть файл по полному пути #15
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы, в свойствах проекта, прописывали путь к dll?
Путь к папке, в которой лежат dll.
Цитата Сообщение от alsav22 Посмотреть сообщение
Тогда без любых dll, в папке с exe, работало бы. Однако не работает, значит никаких путей к dll в exe нет.
Работает, если не трогать библиотеку. Если изменить название папки библиотеки, то зашитый путь в exe становится бесполезным и он ищет dll в папке, в которой он находится.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 16:33     Программа не может открыть файл по полному пути #16
Цитата Сообщение от Chelioss Посмотреть сообщение
Путь к папке, в которой лежат dll.
Покажите как.
Цитата Сообщение от Chelioss Посмотреть сообщение
Работает, если не трогать библиотеку.
То есть, убираете все dll из папки проекта, запускаете exe из папки, и всё работает? А вот это что, тогда, было?
Цитата Сообщение от Chelioss Посмотреть сообщение
EXE просил только 3 dll
Или просил, когда папка была переименованна?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
27.04.2014, 16:53  [ТС]     Программа не может открыть файл по полному пути #17
Цитата Сообщение от alsav22 Посмотреть сообщение
Покажите как.
VC++ Directories -> Executable Directories: C:\OpenCV2.4.8\build\x86\vc11\bin
Цитата Сообщение от alsav22 Посмотреть сообщение
То есть, убираете все dll из папки проекта, запускаете exe из папки, и всё работает? А вот это что, тогда, было?
Dll просит, когда к библиотеке не может добраться(после переименования названия папки библиотеки путь к dll уже не коректен).
Поэтому надо добавить в папку с exe нужные dll, включая ту dll, из-за которой не открывался файл.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 17:16     Программа не может открыть файл по полному пути #18
Цитата Сообщение от Chelioss Посмотреть сообщение
VC++ Directories -> Executable Directories: C:\OpenCV2.4.8\build\x86\vc11\bin
Где-то прочитали, что так нужно делать?
В самой папке проекта есть какие-либо dll ?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
27.04.2014, 17:30  [ТС]     Программа не может открыть файл по полному пути #19
Цитата Сообщение от alsav22 Посмотреть сообщение
Где-то прочитали, что так нужно делать?
В инструкции по установке библиотеки.
Убрал этот путь. Тоже работает.
Цитата Сообщение от alsav22 Посмотреть сообщение
В самой папке проекта есть какие-либо dll ?
Нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 17:38     Программа не может открыть файл по полному пути
Еще ссылки по теме:

Программа, находящая папку по её полному "пути" и подсчитывающая количество файлов в ней C++
C++ Как открыть программу написанную на c++ через командную строку, если в пути программы есть пробелы
C++ Программа, запущенная из автозагрузки, не может записать файл
C++ Не может открыть файл для чтения
Файл: Открыть файл в режиме «а+», внести изменения, характеризующие этот режим. C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 17:38     Программа не может открыть файл по полному пути #20
Цитата Сообщение от Chelioss Посмотреть сообщение
В инструкции по установке библиотеки.
Ссылки, на инструкцию, не осталось?
Цитата Сообщение от Chelioss Посмотреть сообщение
Убрал этот путь. Тоже работает.
Без dll, рядом с exe?
Yandex
Объявления
27.04.2014, 17:38     Программа не может открыть файл по полному пути
Ответ Создать тему
Опции темы

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