You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Linux(WSL)运行Gtk#应用时抛出System.DllNotFoundException的原因?

GtkSharp应用在WSL Ubuntu中运行抛出DllNotFoundException的解决方法

在Windows系统中使用GtkSharp库编译Hello World应用,分别针对Windows和Ubuntu编译后,Windows端可正常运行,但在WSL Ubuntu中运行时抛出以下异常:

Unhandled exception. System.TypeInitializationException: The type initializer for 'Gtk.Application' threw an exception.
---> System.DllNotFoundException: Gtk: libgtk-3-0.dll, libgtk-3.so.0, libgtk-3.0.dylib, gtk-3.dll
at GLibrary.Load(Library library)
at Gtk.Application..cctor()
--- End of inner exception stack trace ---
at Gtk.Application.Init()
at GtkSharp_Application2.Program.Main(String[] args) in I:\Проекты\Programs\GtkSharp Application2\GtkSharp Application2\Program.cs:line 9
Aborted

用户确认编译后的目录包含所有托管库文件:

-rwxrwxrwx 1 lisoveliy lisoveliy   306176 Apr 25  2022  AtkSharp.dll
-rwxrwxrwx 1 lisoveliy lisoveliy   120832 Apr 25  2022  CairoSharp.dll
-rwxrwxrwx 1 lisoveliy lisoveliy   259072 Apr 25  2022  GLibSharp.dll
-rwxrwxrwx 1 lisoveliy lisoveliy   610304 Apr 25  2022  GdkSharp.dll
-rwxrwxrwx 1 lisoveliy lisoveliy  1005568 Apr 25  2022  GioSharp.dll
-rwxrwxrwx 1 lisoveliy lisoveliy   142840 Dec 31 12:59 'GtkSharp Application2'
-rwxrwxrwx 1 lisoveliy lisoveliy    32650 Dec 31 12:59 'GtkSharp Application2.deps.json'
-rwxrwxrwx 1 lisoveliy lisoveliy     5120 Dec 31 12:59 'GtkSharp Application2.dll'
-rwxrwxrwx 1 lisoveliy lisoveliy    10500 Dec 31 12:59 'GtkSharp Application2.pdb'
-rwxrwxrwx 1 lisoveliy lisoveliy      179 Dec 31 12:59 'GtkSharp Application2.runtimeconfig.json'
-rwxrwxrwx 1 lisoveliy lisoveliy  3370496 Apr 25  2022  GtkSharp.dll
-rwxrwxrwx 1 lisoveliy lisoveliy   841872 Oct 23 21:15  Microsoft.CSharp.dll
-rwxrwxrwx 1 lisoveliy lisoveliy  1232520 Oct 23 21:15  Microsoft.VisualBasic.Core.dll
-rwxrwxrwx 1 lisoveliy lisoveliy    18048 Oct 23 20:52  Microsoft.VisualBasic.dll
-rwxrwxrwx 1 lisoveliy lisoveliy    24704 Oct 23 21:15  Microsoft.Win32.Primitives.dll
-rwxrwxrwx 1 lisoveliy lisoveliy    59008 Oct 23 21:15  Microsoft.Win32.Registry.dll
-rwxrwxrwx 1 lisoveliy lisoveliy   203776 Apr 25  2022  PangoSharp.dll

问题原因

目录中的*.Sharp.dll都是.NET托管绑定库,它们仅负责调用底层原生GTK库,无法独立运行。Linux环境下需要系统本身安装libgtk-3.so.0等原生GTK 3依赖,而你当前的WSL Ubuntu系统中并未安装这些原生库。

解决步骤

  1. 在WSL Ubuntu中安装GTK 3原生依赖
    打开WSL终端,执行以下命令:

    sudo apt update
    sudo apt install libgtk-3-0 libglib2.0-0 libgdk-pixbuf2.0-0 libcairo2 libpango-1.0-0
    

    这些是GtkSharp运行必需的底层原生库。

  2. 验证原生库安装状态
    执行命令检查libgtk-3.so.0是否存在:

    ls /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
    

    输出文件路径即表示安装成功。

  3. 重新运行应用
    回到应用目录,执行程序:

    ./GtkSharp\ Application2
    

额外说明

如果需要跨平台发布,建议直接在目标Linux系统中编译应用,确保依赖完全匹配;.NET自包含发布模式无法打包Linux原生GTK库,仍需在目标系统安装对应依赖。

内容的提问来源于stack exchange,提问作者Lisoveliy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:10:30