MonoDevelop无法在(L)Ubuntu上找到共享库

时间:2016-11-15 08:57:48

标签: c# opencv ubuntu monodevelop emgucv

我试图用EmguCV用MonoDevelop做一些图像处理。我可以构建项目,但如果我尝试从MonoDevelop内部调试/运行它,我得到一个Gob说它找不到libdl.so。如果我直接运行已编译的程序(DllNotFoundException),一切正常 这是一个控制台应用程序,我对Gtk#测试项目的行为非常相似,它说,它无法找到libgdiplus.so。我可以用mono emgucv_test.exe找到两个库。
所有这些让我相信,这既不是缺少libs,EmguCV / OpenCV也不是单声道但是使用MonoDevelop的问题。

我尝试在项目运行配置中设置ldconfig -p |grep libgdiplus环境变量,这没有任何帮助。我无法在网上找到任何相关内容,也不知道我还能尝试什么。有什么问题,如何解决这个问题?这只是一个测试应用程序,对于真正的项目,我需要能够使用MonoDevelop正确调试。

我在VirtualBox VM中运行Lubuntu 16.10中的MonoDevelop 6.1.1(flatpak版本)(也在Ubuntu 16.04中测试过),我安装了最新的mono(v4.6.1)。

更新
我刚刚使用LD_LIBRARY_PATH软件包(版本5.10)安装了MonoDevelop进行了测试。有了这个就行了。
我对flatpak一无所知,但我已经在某个地方读过,它对于应用来说是一种沙盒环境。如果这是真的,我遇到的问题可能是由于这个吗?

1 个答案:

答案 0 :(得分:1)

这基本上是预期的。

正如您所理论的那样,问题是FlatPak应用程序在沙箱中运行。 FlatPak MonoDevelop只能看到:

  • 它自己的/ usr - 由org.freedesktop.Runtime提供
  • 它自己的/应用程序 - 为程序包构建的所有内容 - 例如Gtk#,FSharp,libgdiplus,Mono
  • 您的主目录
  • / dev,对于像/ dev / kvm这样的东西,如果我们出于某种原因需要它

在这些地方之外看不到任何东西。

要探索,您可以使用flatpak run --command=bash com.xamarin.MonoDevelop在运行时内部为您提供一个shell,以便您可以看到实际内容。

如果没有捆绑您想要的东西,您有三种选择:

  1. 从NuGet抓取,如果它存在
  2. 以某种方式,在/ home
  3. 中提供它
  4. 建立自己的MonoDevelop,没有FlatPak的容器化,而是使用它
  5. 将沙盒用于GUI应用程序是Linux桌面应用程序的一种趋势,包括IDE(例如GNOME Builder具有完全相同的限制)