Использование C#, .NET Core 3 и GTK# для кроссплатформенного программирования (и альтернатив)C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Использование C#, .NET Core 3 и GTK# для кроссплатформенного программирования (и альтернатив)

Сообщение Anonymous »

Я собираюсь начать разработку программного проекта, который, если возможно, будет работать на Linux и Windows. Поскольку у меня уже есть некоторый опыт работы с C#, я очень хочу использовать его в этом проекте. Я предполагал, что с .NET Core 3 и GTK# 3.22 это не должно быть проблемой, поскольку приложение .NET Core должно быть кроссплатформенным «из коробки». GTK# - насколько я понимаю - должен работать везде, где доступен GTK+ в той же версии.

Почему C#? Ну, мне просто нравится этот язык, и есть ECS Framework для C#, который я хотел бы использовать.

На данный момент я настроил тестовый проект консольного приложения с таргетингом на Visual Studio. .NET Core 3 и добавил пакет NuGet для GTK#.

Я написал простую программу Hello World для тестирования среды.

Код: Выделить всё

using System;
using Gtk;

namespace GTKTest
{
class Program
{
static void Main(string[] args)
{
Application.Init();
Window win = new Window("Hello GTK");
Label lbl = new Label("This is a test GTK App written with C# for GNU/Linux and Windows");
win.DeleteEvent += Win_DeleteEvent;
win.Add(lbl);
win.ShowAll();
Application.Run();
win.Dispose();
Console.Write("Press any key...");
Console.ReadKey();
}

private static void Win_DeleteEvent(object o, DeleteEventArgs args)
{
Application.Quit();
args.RetVal = true;
}

}
}
Когда я запускаю этот код из Visual Studio 2019, я получаю

Код: Выделить всё

System.TypeInitializationException
HResult=0x80131534
Message=The type initializer for 'Gtk.Application' threw an exception.
Source=GtkSharp
StackTrace:
at Gtk.Application.Init()
at GTKTest.Program.Main(String[] args) in D:\Workspace\VSRepos\C#\GTKTest\Program.cs:line 10

Inner Exception 1:
DllNotFoundException: Gtk
В поисках решения я установил mono и GTK# для Windows с этой страницы. Я думаю, что моно-часть не нужна, если я придерживаюсь .NET Core.

Чего мне не хватает? Что я делаю не так? Возможно ли то, чего я пытаюсь достичь, как я себе это представляю? Меня также интересуют некоторые альтернативы программирования кроссплатформенного программного обеспечения с графическим интерфейсом на C#. Я наткнулся на Electron.js, но слышал, что у него большие накладные расходы на память, и я не особо разбираюсь в JavaScript. AvaloniaUI показался интересным, но я подумал, что описанный выше подход будет лучше.

Редактировать: после добавления пути msys, как предложено здесь на шаге 3, я получаю следующую ошибку, предшествующую исключению из приведенного выше. . Ошибка гласит, что точку входа в процедуру не удалось найти в dll.

[img]https://i .sstatic.net/PTtnC.png[/img]


Подробнее здесь: https://stackoverflow.com/questions/581 ... ternatives
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»