Уже 2 дня сижу над следующей проблемой: мне в С++ проекте под .Net надо картинку из ресурсов достать, да так, чтобы она не требовалась при запуске приложения, предположим с другого компа. Вот к чему я пришел:
XXX — название ресурса. И тут возникает проблема! Я не могу достать его правильное название. После запуска прилоджения, вылетает:
An unhandled exception of type 'System.ArgumentException' occurred in system.drawing.dll
Additional information: 'null' is not a valid value for 'stream'.
В С# такая проблема решается просто — надо лишь выставить ресурсу свойство Embedded Resource и обращаться к нему "MyApp.image.bmp", но здесь такого нет и надо выкручиваться.. Помогите, пожалуйста
Re: Специалисты! На вас последняя надежда!
От:
Аноним
Дата:
24.02.05 12:15
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Уже 2 дня сижу над следующей проблемой: мне в С++ проекте под .Net надо картинку из ресурсов достать, да так, чтобы она не требовалась при запуске приложения, предположим с другого компа. Вот к чему я пришел:
А>Assembly* SampleAssembly = Assembly::GetExecutingAssembly(); А>Image *img = Image::FromStream(SampleAssembly->GetManifestResourceStream(XXX));
А>XXX — название ресурса. И тут возникает проблема! Я не могу достать его правильное название. После запуска прилоджения, вылетает:
А>An unhandled exception of type 'System.ArgumentException' occurred in system.drawing.dll А>Additional information: 'null' is not a valid value for 'stream'.
А>В С# такая проблема решается просто — надо лишь выставить ресурсу свойство Embedded Resource и обращаться к нему "MyApp.image.bmp", но здесь такого нет и надо выкручиваться.. Помогите, пожалуйста
В МС++ я помню как-то похитрее с манагед ресурсами, чем в до-диезе, но как и в чем хитрость — не помню Самое простое — посмотри манифест сборки ил-дасмом и узнаешь полное имя нужного тебе ресурса.
Re[3]: Специалисты! На вас последняя надежда!
От:
Аноним
Дата:
24.02.05 12:38
Оценка:
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, Аноним, Вы писали:
ВВ>В МС++ я помню как-то похитрее с манагед ресурсами, чем в до-диезе, но как и в чем хитрость — не помню Самое простое — посмотри манифест сборки ил-дасмом и узнаешь полное имя нужного тебе ресурса.
Пытался, но там не нашел ничего, что касается полных названий ресурсов.. Будь добр, вспомни ту хитрость, я в полном отчаянии!!
Hello,
> ВВ>В МС++ я помню как-то похитрее с манагед ресурсами, чем в до-диезе, но как и в чем хитрость — не помню Самое простое — посмотри манифест сборки ил-дасмом и узнаешь полное имя нужного тебе ресурса. > > Пытался, но там не нашел ничего, что касается полных названий ресурсов.. Будь добр, вспомни ту хитрость, я в полном отчаянии!!
Смотри раздел в MSDN: /ASSEMBLYRESOURCE (Embed a Managed Resource)
Posted via RSDN NNTP Server 2.0 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здесь нет (практически) людей, хотя бы немного работающих с MC++.NET.
Некоторые крутые дядьки вообще считают поддержку Ц++ дотнетью — наиглупейшей вещью, которую когда-либо делало МС, да и огромнейшей дырой в платформе. Если помнишь, все дыры (buffer-overflow) находят в прогах, писаных на Ц/ЦПП.
ЗЫ: флаг, барабан, бронепоезд. честно. от всей души.
—
Real programmers don't comment their code.
If it was hard to write, it should be hard to understand.
> ВВ>В МС++ я помню как-то похитрее с манагед ресурсами, чем в до-диезе, но как и в чем хитрость — не помню Самое простое — посмотри манифест сборки ил-дасмом и узнаешь полное имя нужного тебе ресурса. Пытался, но там не нашел ничего, что касается полных названий ресурсов.. Будь добр, вспомни ту хитрость, я в полном отчаянии!!
"MyApp.image.bmp", но здесь такого нет и надо выкручиваться.. Помогите, пожалуйста
попробуй отратиться к нему не как "MyApp.image.bmp", а как "http://myapp/виртуальный_каталог_с_картинкой/image.bmp"
С уважением, Max Pro.
Есть многое на свете, друг Горацио, что непонятно нашим мудрецам.
Программисты всех стран, соединяйтесь!
BlackTigerAP,
> Некоторые крутые дядьки вообще считают поддержку Ц++ дотнетью — наиглупейшей вещью, которую когда-либо делало МС
Это эмоции.
> да и огромнейшей дырой в платформе.
В таком случае эти дядьки просто не разобрались в том, о чем говорят.
> Если помнишь, все дыры (buffer-overflow) находят в прогах, писаных на Ц/ЦПП.
На C++/CLI можно будет писать полностью верифицируемый код, с теми же гарантиями относительно отсутствия записи за пределами объекта, что и, скажем, в C#. Платформа изолирует себя от подобных "дыр" не тем, что запрещает те или иные языки, а тем, что имеет возможность верифицировать код, когда это имеет значение. В частности, можно писать и на MSIL, в котором возможностей выстрелить себе в ногу уж никак не меньше, чем в MC++ или C++/CLI.
Posted via RSDN NNTP Server 2.0 alpha
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
> > В МС++ я помню как-то похитрее с манагед ресурсами, чем в до-диезе, но как > и в чем хитрость — не помню Самое простое — посмотри манифест сборки > ил-дасмом и узнаешь полное имя нужного тебе ресурса.
Да ничего там не хитрее — надо залезть в ILDASM, Reflector, Spices.Net — в
любой доступный броузер сборок и посмотреть реальное имя ресурса в Managed
Resources и это имя юзать. В случае изменения namespace или перемещения
графики в другой каталог начинаются геморы. Хотя это конечно очень редко
бывает, но очень неприятно — надо об это помнить.
Я вообще проще делаю — храню графику (конечно ту что небольшая) как byte[] и
когда надо загружаю в MemoryStream а дальше Image.FromStream. Попроще будет.
Как вариант подойдет и работа со "своим" resx или Xml.