单声道GtkSharp 3.22

时间:2017-10-26 03:46:10

标签: c# mono gtk gtk3

我需要在Linux环境中使用Mono编写Gtk#应用程序。由于我需要> = 3.22中的特定功能,因此我无法使用默认的Gtk2库。

到目前为止尝试的步骤:

  1. 安装Gtk3库版本3.22.24.0 sudo apt-get install libgtk-3-dev
  2. 在MonoDevelop中,安装此package应该提供最新的Gtk#绑定版本3.22.6.4。
  3. 运行一个简单的Gtk#应用程序(在main中简单为Gtk.Application.Init())会触发以下异常:

    System.DllNotFoundException: libgtk-3.so.0
    

    尽管ldconfig -p | grep libgtk/usr/lib/x86_64-linux-gnu下返回了此类文件。

    我觉得我在这里错过了一些非常明显的东西。我正在运行Ubuntu 17.10(x86),MonoDevelop 7.1 build 1291。

    编辑 - 问题在于通过Flatpak安装MonoDevelop,它提供了一个沙盒环境,可以屏蔽"来自外部参考的应用程序,包括Gtk库。因此,我安装Mono并在this guide之后编译MonoDevelop几乎逐字:

    1. 添加回购列表并更新所有内容(Ubuntu' s" factory-default" repos附带4.oome版本的Mono,这还不足以编译Monodevelop,因为它缺乏的MSBuild):

      sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
      echo "deb http://download.mono-project.com/repo/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/mono-official.list
      sudo apt update && sudo apt upgrade -y
      
    2. 安装所需的依赖项:

      sudo apt install -y autoconf automake cmake fsharp git gnome-sharp2 gtk-sharp2 libssh2-1-dev mono-complete referenceassemblies-pcl zlib1g-dev
      
    3. 从git克隆Monodevelop,X是我们从here(用7.3.0.708测试)中选择的版本,最后一个参数是源所在的文件夹:

      git clone https://github.com/mono/monodevelop.git --branch monodevelop-X --depth 1 X
      
    4. 配置,制作和安装:

      ./configure --profile=stable --enable-release
      make
      sudo make install
      
    5. 安装GtkSharp 3:

      sudo apt-get install libgtk-3-dev
      
    6. 就是这样。使用前面提到的package开发的应用程序将正常工作。

      出于某种原因,我的应用程序在从MonoDevelop内部运行时崩溃(与Builder.ExtendWithTemplate导入的Glade文件有关),但是从命令行mono <appname>.exe开始工作,所以我的解决方案可能不是最好的,但那是一个开始。

0 个答案:

没有答案