单声道DllNotFound错误

时间:2013-03-26 01:49:28

标签: linux mono

我发现自己无法在Mono 3.0中运行任何WinForms应用程序(在OpenSUSE 12.3 x64上)。我得到的问题是System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.XplatUI ---> System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.DllNotFoundException: /usr/local/lib/libgdiplus.so。找不到libgdiplus.so的原因是它不在我系统的/usr/local/lib而是/usr/lib64。我知道/usr/lib64在ldconfig的路径中的事实,我也尝试更改/etc/mono/config中gdiplus的dllmap条目直接指向它,并且错误仍然存​​在。

我有一个完整的日志,尝试使用MONO_LOG_LEVEL="debug" here.运行MoMA。它似乎忽略了配置文件,并在错误的位置直接查找SO。

有没有办法让它在正确的位置找到这个SO?

1 个答案:

答案 0 :(得分:3)

@PrinceBilliard - 根本原因是对 /data/config.in 的更改,它将(部分)硬编码路径添加到libgdiplus.so。真正的解决方法是修改源代码以从条目中删除路径,只在条目中留下 libgdiplus.so
如果配置文件中有路径,Mono将使用该路径并忽略ldconfig缓存和LD_LIBRARY_PATH。如果没有路径,Mono将尝试使用不同后缀的库名称以及引用ldconfig缓存和LD_LIBRARY_PATH。

我在我的软件包规范中处理它的方法是添加%post任务来编辑/ mono / config并从条目中删除路径。 RobFlum