3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
|
||||||
1 | ||||||
VC++2010 не могу открыть ресурсы07.12.2013, 17:59. Показов 4449. Ответов 28
Метки нет (Все метки)
Снова обращаюсь к уважаемому обществу. На этот раз проблема такая (VS2010 Professional, консольное приложение).
Включил текстовый файл .txt в ресурсы. Написал такой доступ к нему (ниже). Однако никак такой код не хочет находить мой ресурс, сразу уходит на сообщение "Ресурс не найден". Т.е. функция FindResource возвращает не имя ресурса, а NULL. Что надо сделать, чтобы ресурс был найден и можно было читать данные из текстового файла?
0
|
07.12.2013, 17:59 | |
Ответы с готовыми решениями:
28
аксес 2003 ( ХР ) не могу открыть на 2010 ( 7 ) Не могу открыть в Microsoft Visual Studio 2010 Express Access 2010 не могу открыть бд (workgroup information file is missing) Выделенные ресурсы на хостинге и на что я могу рассчитывать? |
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
11.12.2013, 17:16 | 21 | |||||
На скрине, разве '\0' добавляется в текстовом редакторе (как вы сделали)? Когда вы в текстовом редакторе пишите '\0', то это не терминальный ноль (управляющий символ), а просто четыре символа. Терминальный ноль существует в языке, в коде, (в редакторе его нет), и использовать его можно только методами языка. Например, строковые функции чтения из файла добавляют его в конец строки. В файл, терминальный ноль, можно записать в бинарном режиме, т.е., открыть файл для дозаписи в конец файла (ios::app), и, в бинарном режиме, записать туда переменную char, со значением 0:
1
|
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
|
||||||
11.12.2013, 17:26 [ТС] | 22 | |||||
Вот какой код в результате получился:
0
|
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
|
|
11.12.2013, 17:30 [ТС] | 23 |
А, так файл надо было просто открыть, не как ресурс? И тогда его откорректировать функциями работы с открытым файлом? А потом закрыть и снова открыть и читать как файл ресурса?
0
|
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
|
|
11.12.2013, 17:50 [ТС] | 25 |
Понятно.
Убежденный и alsav22! Большое Вам спасибо за помощь! Вопрос с открытием и чтением ресурса решен.
0
|
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
|
|
22.12.2013, 12:22 [ТС] | 27 |
Возвращаюсь к проблеме чтения ресурса.
Мне надо, чтобы ресурс хранился в библиотеке. Там же происходит некоторая обработка, связанная с чтением ресурса. На основе примера в сообщении #22 я сделал функцию чтения текстового ресурса, подключил к библиотеке ресурс и скомилировал файл *.dll. Из исполняющей exe программы я обращаюсь к библиотеке и хочу увидеть значение одного из параметров ресурса. Библиотека и библиотечная функция чтения ресурса отыскиваются нормально, параметр HMODULE hModS имеет не нулевое значение, параметры функции HRSRC const hResInfo = FindResourceW(hModS, pResName, pResType); тоже имеют ненулевые значения, т.е. функция нахождения текстового ресурса FindResourceW должна завершиться с ненулевым значением. А она возвращает 0! Т.е. ресурс на находит. В то же время, если я подключаю ресурс также и в исполняющую программу, то ресурс библиотечная функция находит и открывает исправно. В чем может быть дело? Мне надо хранить ресурс именно в библиотеке. Добавлено через 11 минут Дополнение. Если точнее описать задачу, то мне надо иметь две библиотеки. Одна - с текстовыми файлами ресурсов. Другая - с функциями обработки тестовых файлов ресурсов, из которой вызывается первая библиотека. А уже исполняющая программа вызывает вторую библиотеку. Т.е. такая пирамида получается: исполняющая программа -> библиотека2 -> библиотека1(с ресурсами).
0
|
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
|
|
24.12.2013, 14:58 [ТС] | 28 |
Еще дополнение.
Попробовал открывать текстовый файл (не ресурс) через библиотеку с помощью std::ifstream, open() и прочих функций открытия текстового файла. Не Открывает! Может быть С++ в принципе не может работать с файлами-ресурсами и текстами через библиотеку? Если так, то грустно!
0
|
3 / 3 / 1
Регистрация: 13.07.2013
Сообщений: 71
|
|
19.01.2014, 15:24 [ТС] | 29 |
Для тех, кто столкнется с такой же проблемой.
Напомню, что мне надо было использовать ресурс, находящийся в текстовом файле и включенный в библиотеку DLL №1. В свою очередь, доступ к библиотеке DLL №1 должен быть из библиотеки DLL №2. А уже доступ к библиотеке DLL №2 должен быть из исполняющего файла. Т.е. цепочка доступа к ресурсу такая: исполняющая программа -> библиотека №2 -> библиотека №1(с ресурсами). Открытие файла ресурса, который находится в библиотеке №1, через библиотеку № 1, долго не мог произвести и вот наконец добился положительного результата. Причина оказалась простой - соглашение о вызовах! Это соглашение о вызове функции для доступа к библиотеке и ресурсам (у меня оно extern "C" __declspec(dllexport) ) было записано только в библиотеке №1. А во второй библиотеке написать забыл. Поэтому доступ к библиотекам был, а доступа к функциям, и соответственно - к ресурсам, не было. Теперь все работает, ресурс через две библиотеки открывается и читается.
0
|
19.01.2014, 15:24 | |
19.01.2014, 15:24 | |
Помогаю со студенческими работами здесь
29
Прошу открыть проект в VS 2010 Возможно ли проект, созданный в C++ 6.0, открыть в C++ 2010? Как открыть программу VS 2012 в VS 2010 Excel 2010 открыть в разных окнах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |