2015-04-19 3 views
1

Я только что установил Cosmos и попытался запустить тестовую программу, заданную по умолчанию. Вот код:Cosmos «Привет мир» Ошибка генерации штепселя

using System; 
using System.Collections.Generic; 
using System.Text; 
using Sys = Cosmos.System; 

namespace CosmosKernel2 
{ 
    public class Kernel : Sys.Kernel 
    { 
     protected override void BeforeRun() 
     { 
      Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back."); 
     } 

     protected override void Run() 
     { 
      Console.Write("Input: "); 
      var input = Console.ReadLine(); 
      Console.Write("Text typed: "); 
      Console.WriteLine(input); 
     } 
    } 
} 

Когда я пытаюсь скомпилировать его, он говорит:

Error 8 Plug needed. System.Void System.Threading.Monitor.Exit(System.Object) 
    at Cosmos.IL2CPU.ILScanner.ScanMethod(MethodBase aMethod, Boolean aIsPlug) in c:\Data\Sources\Cosmos\source2\IL2CPU\Cosmos.IL2CPU\ILScanner.cs:line 663 
    at Cosmos.IL2CPU.ILScanner.ScanQueue() in c:\Data\Sources\Cosmos\source2\IL2CPU\Cosmos.IL2CPU\ILScanner.cs:line 779 
    at Cosmos.IL2CPU.ILScanner.Execute(MethodBase aStartMethod) in c:\Data\Sources\Cosmos\source2\IL2CPU\Cosmos.IL2CPU\ILScanner.cs:line 284 
    at Cosmos.Build.MSBuild.IL2CPUTask.Execute() in c:\Data\Sources\Cosmos\source2\Build\Cosmos.Build.MSBuild\IL2CPUTask.cs:line 239 C:\Program Files (x86)\MSBuild\Cosmos\Cosmos.targets 32 10 CosmosKernel2Boot 

Я использую Visual Studio 2010, я установил все требования, перечисленные здесь: http://cosmos.codeplex.com/releases/view/123476

Спасибо вы заранее!

+0

Обратите внимание, что console.readline() всегда возвращает строку, вследствие чего ее var неэффективно. – Thealon

ответ

0

Кажется, что Cosmos плохо работает с окнами 8/8.1. Таким образом, единственное решение - либо установить Windows 7, либо запустить виртуальную машину с установленной Windows 7 (последняя работала для меня)

1

Ошибка "plug required" означает, что вы использовали какой-либо метод, который полагается на внутренний вызов или PInvoke, и, таким образом, Cosmos не может его скомпилировать.

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

Используйте ниже руководство, чтобы помочь вам начать:

http://www.codeproject.com/Articles/220076/Csharp-Open-Source-Managed-Operating-System-Intro

http://www.codeproject.com/Articles/29523/Cosmos-C-Open-Source-Managed-Operating-System

Update: Попробуйте использовать что-то похожее на этот код:

using System; 
using Cosmos.Compiler.Builder; 

namespace CosmosBoot1 
{ 
    class Program 
    { 
     #region Cosmos Builder logic 
     // Most users wont touch this. This will call the Cosmos Build tool 
     [STAThread] 
     static void Main(string[] args) 
     { 
      BuildUI.Run(); 
     } 
     #endregion 

     // Main entry point of the kernel 
     public static void Init() 
     { 
      var xBoot = new Cosmos.Sys.Boot(); 
      xBoot.Execute(); 
      //There's supposed to be a bit of text here. Change it to Console.WriteLine("Hello world!"); 
     } 
    } 
} 
+0

Я установил PInvoke, но проблема все еще там. Что я могу сделать, чтобы исправить это? –

+0

Смотрите это видео youtube: https://www.youtube.com/watch?v=V8_rCIvzq4I, попробуйте использовать что-то похожее на код в видео. – DeJaVo

+0

Я все еще довольно новичок в C#, но дело в том, что мне нужен Космос для проекта в школе. Будет ли установка VS 2008 работать? У меня нет никаких предпочтений о версиях и т. Д., Просто рабочий код, который может быть загружен виртуальной машиной. Кроме того, не установлен пакет Cosmos.Compiler (он вызывает ошибку) –

 Смежные вопросы

  • Нет связанных вопросов^_^