C ++ для байт-кода компилятора для Silverlight CLR? - PullRequest
0 голосов
/ 03 мая 2010

Я бы хотел иметь возможность скомпилировать библиотеку C / C ++, чтобы она работала в безопасной управляемой среде выполнения в CLR Silverlight.

Есть несколько инструментов для этого с JVM, позволяющей запускать код C ++ на уровне эмуляции CRT (см. NestedVM , LLJVM и т. Д.) , который эффективно позволяет запускать код C ++ в Java-апплете. Есть даже инструмент для этого для Adobe Flash VM (см. Алхимия ).

Однако я не могу найти какие-либо инструменты, подобные этому, для CLR. Кстати, инструменты MSVC, по-видимому, не позволяют этого: флаг /clr:pure создаст код C ++, который выполняется в CLR, но это небезопасно (потому что CRT небезопасен), а для /clr:safe требуется массивный изменения кода (без собственных типов и т. д.).

Ответы [ 3 ]

1 голос
/ 03 мая 2010

Тогда я думаю, что вам просто не повезло. Если ваш код не может использовать флаг / clr: safe, он не будет компилироваться во что-то, что может работать в Silverlight. Если C ++ делает что-то, что CLR не разрешает или не поддерживает, то нет прямого пути к этому.

В зависимости от того, что делает ваш код, вы можете выполнить его на сервере и вызвать его из Silverlight через веб-сервис?

0 голосов
/ 10 октября 2012

То, что хочет сделать оригинальный постер, звучит хорошо для меня ... но, возможно, не возможно.

Я так понимаю, вы в принципе хотите иметь возможность запускать свой код C ++ в silverlight, не перенося его на / clr: safe

Прекрасное и благородное занятие. Я хотел бы сделать то же самое. Но, насколько я могу судить, ты не можешь этого сделать: (

Самый близкий метод, который я видел, упоминает, возможно, нацеливание на моно clr ... и затем использовать это в clr? Это ваш вложенный ЭЛТ.

Меня не особо волнует, работает ли код изначально или нет. Чего я не хочу делать, так это перенести многомиллионную строку кода C / C ++ на / clr: safe, просто чтобы он мог работать в silverlight.

Я думаю, этого хочет ОП:)

желаю ему удачи: (

0 голосов
/ 03 мая 2010

То, что вы ищете, по своей сути невозможно. Проблема в том, что нативные типы C ++ допускают прямой доступ к указателям. С помощью указателя вы можете обойти модель безопасности .NET и поставить под угрозу среду выполнения. Это не только потому, что CRT небезопасен, это потому, что указатели небезопасны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...