186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
1 | |
Программа не может открыть файл по полному пути26.04.2014, 21:18. Показов 3068. Ответов 25
Метки нет (Все метки)
Есть проект в VS 2012, который работает с библиотекой OpenCV. В коде пишу полный путь к файлу. Все работает и файл открывается программой. Отключаю библиотеку(просто меняю название папки, в которой она находится) и добавляю нужные dll в папку с экзешником. Программа запускается, но файл она не открывает. Что не так?
0
|
26.04.2014, 21:18 | |
Ответы с готовыми решениями:
25
Программа не может открыть текстовый файл Программа, находящая папку по её полному "пути" и подсчитывающая количество файлов в ней Открыть файл по заданному пути Как сделать так, чтобы программа брала файл не по полному пути, а из собственной папки? |
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
26.04.2014, 21:39 [ТС] | 3 |
А какая разница. Будет другой путь, ну и что? Все равно не работает.
И мне надо без IDE.
0
|
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 минут
После того, как убрали полный путь в коде, проект пересобирали? Добавлено через 18 минут Отключаете от чего? Если этого не делать, а просто добавить dll в папку с exe, то работает? Добавлено через 1 минуту Откуда запускаете? Из среды или из папки? Добавлено через 11 минут Сейчас проверил. И с полным путём, и с не полным путём всё работает. Что-то не так делаете. Переименование папки с библиотекой вообще никак не должно влиять на запуск, собранного exe, из папки.
1
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
27.04.2014, 14:00 [ТС] | 7 |
да
Эзешнику нужны dll, которые лежат в папке с
библиотекой. Если папку переименовать, то программа ругается на то, что отсутствует dll. Мне нужен скинуть программу человеку, но чтобы ему не пришлось ставить эту библиотеку. Если добавить dll к экзешнику в папку, то прога работает, но не открывает файл.
И так и так не работает. А я говорил, что влияет? Прога запускается, но файл она не открывает. Если библиотеку не трогать, то файл открывается, если библиотеку переименовать, то файл не открывает. Фокус.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
27.04.2014, 14:16 | 8 |
У меня всё работает, у вас не работает. Переименование папки должно влиять, только на сборку проекта. Возможные причины этого фокуса: далаете много дейстий одновременно ("и так, и так"), поэтому отследить, что на что влияет, трудно. Предлагаю такой порядок действий. Убрать в коде полный путь к файлу, файл поместить и в папку проекта, и в папку с exe (что, кстати, собираете? Release или Debug?). Папку с библиотекой не переименовывать. Сделать очистить, перестроить (именно, перестроить: F7 + Ctrl + Alt). Из студии не запускать. Зайти в папку проекта и посмотреть, чтобы время изменения exe совпадало с временем перестройки. Запустить exe из папки. Если будет работать, то переименовать папку (чисто для проверки), и опять запустить exe из папки.
1
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
27.04.2014, 15:29 [ТС] | 9 |
В папку с библиотекой лежат dll, которые требуются для работы программы, а не только для ее сборки. Хотя я и не вижу связи между dll и путем к файлу.
Debug
Тоже самое. Не работает.
Все таки додумался в чем проблема. Проблема в DLL. EXE просил только 3 dll, но этого не хватало для открытия файлов. Я добавил все dll из библиотеки в папку с exe и заработало.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
27.04.2014, 15:41 [ТС] | 11 |
Путь к dll наверно зашит в exe.
Для открытия файла прога использует одну dll, которая есть в папке библиотекой, но нет в папке с exe. Т.е. прога запускается без этой dll, но открыть не может. Если закрыть доступ к библиотеке, то проге не хватает этой dll. Добавил эту dll в папке с exe и теперь файл открывается.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
27.04.2014, 15:51 | 12 |
Нет, так не бывает. При создании dll никто не знает, где будет находиться папака с dll. Если нужная dll не находится рядом с exe, то она ищется в path. А раз у вас без всех dll, но без изменеия папки, работало, то значит где-то, что-то прописано.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
27.04.2014, 16:02 [ТС] | 13 |
Да, прописано в свойствах проекта, а потом после компиляции и в exe. Вроде так. Я про создание dll не говорил.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
27.04.2014, 16:14 | 14 |
Да, это я не то написал, прошу прощения.
Вы, в свойствах проекта, прописывали путь к dll? Тогда без любых dll, в папке с exe, работало бы. Однако не работает, значит никаких путей к dll в exe нет.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
27.04.2014, 16:19 [ТС] | 15 |
Путь к папке, в которой лежат dll.
Работает, если не трогать библиотеку. Если изменить название папки библиотеки, то зашитый путь в exe становится бесполезным и он ищет dll в папке, в которой он находится.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
27.04.2014, 16:33 | 16 |
Покажите как.
То есть, убираете все dll из папки проекта, запускаете exe из папки, и всё работает? А вот это что, тогда, было? Или просил, когда папка была переименованна?
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
27.04.2014, 16:53 [ТС] | 17 |
VC++ Directories -> Executable Directories: C:\OpenCV2.4.8\build\x86\vc11\bin
Dll просит, когда к библиотеке не может добраться(после переименования названия папки библиотеки путь к dll уже не коректен).
Поэтому надо добавить в папку с exe нужные dll, включая ту dll, из-за которой не открывался файл.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
27.04.2014, 17:30 [ТС] | 19 |
В инструкции по установке библиотеки.
Убрал этот путь. Тоже работает. Нет.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
27.04.2014, 17:38 | 20 |
Ссылки, на инструкцию, не осталось?
Без dll, рядом с exe?
0
|
27.04.2014, 17:38 | |
27.04.2014, 17:38 | |
Помогаю со студенческими работами здесь
20
Программа не может открыть свой файл Программа создает файл, который не может открыть microsoft office (абсолютно безвредна) При использовании функции fgets () и вводе абсолютно правильного имени файла программа не может открыть файл Создание дерева по полному пути Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |