Действительно ли возможно выполнить код C непосредственно в браузере?

Я предложил бы проверить на внутреннее исключение. Если нет один, проверьте свои журналы на исключение, которое сразу произошло до этого.

Это не определенное для сети исключение, я также встретился с ним в разработке настольного приложения. Короче говоря, что происходит, то, что поток, получающий это исключение, работает, некоторый асинхронный код (через Вызывают (), например), и которые кодируют, это выполняется, асинхронно взрывается за исключением. Этим целевым исключением вызова является последствие того отказа.

, Если Вы уже не имеете, поместите своего рода обертку входа исключения вокруг асинхронных обратных вызовов, которые вызываются, когда Вы инициировали эту ошибку. Обработчики событий, например. Это должно помочь Вам разыскать проблему.

Удачи!

9
задан Gama11 10 March 2019 в 15:31
поделиться

7 ответов

Google Native Client (NaCl) использует модифицированный компилятор для создания объектного кода x86, который может быть проверен браузером и запущен в песочнице без значительного снижения производительности - довольно крутая штука. Они скомпилировали Quake под него.

В этой статье Матасано есть хорошее изложение того, как это работает.

16
ответ дан 4 December 2019 в 07:14
поделиться

Вот компилятор C, предназначенный для ряда других языков, включая Javascript:

http://cowlark.com/clue/

Не уверен, в каком он состоянии - в последний раз я говорил с автором, он работал на чистом C89 (с учетом ограничений внешнего интерфейса компилятора). AFAIK нет никаких планов, чтобы он когда-либо поддерживал графический интерфейс.

Мне было интересно, есть ли у вас приложение, работающее на настольном компьютере, или существующая база кода, созданная на C, C ++ или Objective C, можно ли его легко преобразовать в веб-приложение?

Именно для этого и предназначен Silverlight (конечно, C #, а не Objective-C), поскольку он делает доступной среду выполнения .NET. Перенос настольного приложения обычно связан с графическим интерфейсом пользователя и языком - если у вас есть приложение Cocoa и вы хотите перенести его в другую среду (будь то браузер или Windows), вам понадобится нечто большее, чем просто кросс-компилятор Objective-C, вам понадобится Application Kit и так далее. WINE является ярким контрпримером, поэтому довольно редко эти специфичные для ОС библиотеки вообще доступны на других платформах, не говоря уже об эффективности. И даже там, где они доступны, возникают проблемы с внешним видом и удобством использования, когда условные обозначения одного пользовательского интерфейса привязываются к другому. Таким образом, люди склонны либо использовать для начала переносимые фреймворки, либо полностью переписывать уровень представления приложения.

В основном превратить браузер в ОС?

Сейчас ведется несколько проектов по превращению браузера в полнофункциональную среду для приложений (не уверен, что вы имеете в виду под «ОС»). Flash и AIR, Silverlight, HTML 5. Насколько мне известно, никто из них не планирует предоставлять C в качестве языка программирования.

6
ответ дан 4 December 2019 в 07:14
поделиться

Я думаю, что вам больше всего нужно Google Собственный клиент . Однако он все еще находится на ранней стадии разработки.

3
ответ дан 4 December 2019 в 07:14
поделиться

Вас может заинтересовать LLVM , виртуальная машина низкого уровня. Было бы возможно реализовать LLVM внутри Java-апплета, Flash-апплета или даже в Javascript (я не удивлюсь, если кто-то еще не выполнил некоторые или все вышеперечисленное).

Преобразование Однако существующее приложение - это совсем другое дело. Парадигмы взаимодействия с пользователем совершенно разные между настольным приложением и браузером.

2
ответ дан 4 December 2019 в 07:14
поделиться

Это возможно с помощью элемента управления ActiveX, но работает только в Microsoft Internet Explorer.

1
ответ дан 4 December 2019 в 07:14
поделиться

Мне кажется, что основные проблемы не связаны к используемому языку. Я подозреваю, что C будет очень сложным языком для реализации в JavaScript, но это возможно. Мне это кажется плохой идеей.

Во-первых, я бы не стал писать настольное приложение на C, не говоря уже о веб-приложении. Во-вторых, веб-приложения требуют совершенно иной архитектуры, чем настольные приложения. Простая кросс-компиляция настольного приложения не сделает его веб-приложением. Если вам нужна переносимость, я предлагаю использовать язык высокого уровня, ориентированный на JVM.

-1
ответ дан 4 December 2019 в 07:14
поделиться

Обратите внимание на Adobe Alchemy (ранее известная как FlaCC), которая использует LLVM для компиляции C / C ++ во Flash.

2
ответ дан 4 December 2019 в 07:14
поделиться