Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
1

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

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

Author24 — интернет-сервис помощи студентам
Есть проект в VS 2012, который работает с библиотекой OpenCV. В коде пишу полный путь к файлу. Все работает и файл открывается программой. Отключаю библиотеку(просто меняю название папки, в которой она находится) и добавляю нужные dll в папку с экзешником. Программа запускается, но файл она не открывает. Что не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2014, 21:18
Ответы с готовыми решениями:

Программа не может открыть текстовый файл
Уважаемые форумчане, есть такой код #include "stdafx.h" #include <iostream> #include <fstream>...

Программа, находящая папку по её полному "пути" и подсчитывающая количество файлов в ней
Здравствуйте, вот код программы, а ошибка состоит в том, что программа не ищет папки или файлы по...

Открыть файл по заданному пути
Нужно, чтобы открывался файл, который, например, находится в C:\TEST#1 Подскажите, пожалуйста, как...

Как сделать так, чтобы программа брала файл не по полному пути, а из собственной папки?
У меня есть Ole контейнер, и CheckBox К ним код: procedure TForm1.ComboBox1Change(Sender:...

25
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
26.04.2014, 21:29 2
попробуйте добавить файл в папку с проектом, если запускаете из IDE
1
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
26.04.2014, 21:39  [ТС] 3
А какая разница. Будет другой путь, ну и что? Все равно не работает.
И мне надо без IDE.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 01:11 4
Цитата Сообщение от Chelioss Посмотреть сообщение
Программа запускается, но файл она не открывает. Что не так?
Пишите не полный путь к файлу, и положите файл рядом с .exe.
1
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.04.2014, 02:49  [ТС] 5
Тоже не работает.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 12:25 6
Добавлено через 11 минут
Цитата Сообщение от Chelioss Посмотреть сообщение
Тоже не работает.
После того, как убрали полный путь в коде, проект пересобирали?

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

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

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

Все таки додумался в чем проблема. Проблема в DLL. EXE просил только 3 dll, но этого не хватало для открытия файлов. Я добавил все dll из библиотеки в папку с exe и заработало.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 15:36 10
Цитата Сообщение от Chelioss Посмотреть сообщение
Я добавил все dll из библиотеки в папку с exe и заработало.
Я сразу все добавлял, поэтому у меня и работало. Непоятно только, как переименование папки на это влияло? Путь к dll где-то в path прописан?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.04.2014, 15:41  [ТС] 11
Цитата Сообщение от alsav22 Посмотреть сообщение
Я сразу все добавлял, поэтому у меня и работало. Непоятно только, как переименование папки на это влияло? Путь к dll где-то в path прописан?
Путь к dll наверно зашит в exe.
Для открытия файла прога использует одну dll, которая есть в папке библиотекой, но нет в папке с exe. Т.е. прога запускается без этой dll, но открыть не может. Если закрыть доступ к библиотеке, то проге не хватает этой dll. Добавил эту dll в папке с exe и теперь файл открывается.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 15:51 12
Цитата Сообщение от Chelioss Посмотреть сообщение
Путь к dll наверно зашит в exe.
Нет, так не бывает. При создании dll никто не знает, где будет находиться папака с dll. Если нужная dll не находится рядом с exe, то она ищется в path. А раз у вас без всех dll, но без изменеия папки, работало, то значит где-то, что-то прописано.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.04.2014, 16:02  [ТС] 13
Цитата Сообщение от alsav22 Посмотреть сообщение
Нет, так не бывает. При создании dll никто не знает, где будет находиться папака с dll. Если нужная dll не находится рядом с exe, то она ищется в path. А раз у вас без всех dll, но без изменеия папки, работало, то значит где-то, что-то прописано.
Да, прописано в свойствах проекта, а потом после компиляции и в exe. Вроде так. Я про создание dll не говорил.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 16:14 14
Цитата Сообщение от Chelioss Посмотреть сообщение
Я про создание dll не говорил.
Да, это я не то написал, прошу прощения.
Цитата Сообщение от Chelioss Посмотреть сообщение
Да, прописано в свойствах проекта
Вы, в свойствах проекта, прописывали путь к dll?
Цитата Сообщение от Chelioss Посмотреть сообщение
а потом после компиляции и в exe. Вроде так.
Цитата Сообщение от Chelioss Посмотреть сообщение
Путь к dll наверно зашит в exe.
Тогда без любых dll, в папке с exe, работало бы. Однако не работает, значит никаких путей к dll в exe нет.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.04.2014, 16:19  [ТС] 15
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы, в свойствах проекта, прописывали путь к dll?
Путь к папке, в которой лежат dll.
Цитата Сообщение от alsav22 Посмотреть сообщение
Тогда без любых dll, в папке с exe, работало бы. Однако не работает, значит никаких путей к dll в exe нет.
Работает, если не трогать библиотеку. Если изменить название папки библиотеки, то зашитый путь в exe становится бесполезным и он ищет dll в папке, в которой он находится.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 16:33 16
Цитата Сообщение от Chelioss Посмотреть сообщение
Путь к папке, в которой лежат dll.
Покажите как.
Цитата Сообщение от Chelioss Посмотреть сообщение
Работает, если не трогать библиотеку.
То есть, убираете все dll из папки проекта, запускаете exe из папки, и всё работает? А вот это что, тогда, было?
Цитата Сообщение от Chelioss Посмотреть сообщение
EXE просил только 3 dll
Или просил, когда папка была переименованна?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
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, из-за которой не открывался файл.
0
5498 / 4893 / 831
Регистрация: 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 ?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.04.2014, 17:30  [ТС] 19
Цитата Сообщение от alsav22 Посмотреть сообщение
Где-то прочитали, что так нужно делать?
В инструкции по установке библиотеки.
Убрал этот путь. Тоже работает.
Цитата Сообщение от alsav22 Посмотреть сообщение
В самой папке проекта есть какие-либо dll ?
Нет.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2014, 17:38 20
Цитата Сообщение от Chelioss Посмотреть сообщение
В инструкции по установке библиотеки.
Ссылки, на инструкцию, не осталось?
Цитата Сообщение от Chelioss Посмотреть сообщение
Убрал этот путь. Тоже работает.
Без dll, рядом с exe?
0
27.04.2014, 17:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2014, 17:38
Помогаю со студенческими работами здесь

Программа не может открыть свой файл
Здравствуйте.Покликал по системе теперь при нажатии на файл открывается моя программа.Как сделать...

Программа создает файл, который не может открыть microsoft office (абсолютно безвредна)
Вроде бы простенькая прога. var b:integer; begin assign(input,'input.txt'); reset(input);...

При использовании функции fgets () и вводе абсолютно правильного имени файла программа не может открыть файл
Прошу прощение за беспокойство и за глупый вопрос, но вoобщем проблема такая: Программа...

Создание дерева по полному пути
Добрый день! Пишу прогу на VB.net все функции готовы чтоб закончить прогу, осталась одна функция...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru