我发现自己无法在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?
答案 0 :(得分:3)
@PrinceBilliard - 根本原因是对 /data/config.in 的更改,它将(部分)硬编码路径添加到libgdiplus.so。真正的解决方法是修改源代码以从条目中删除路径,只在条目中留下 libgdiplus.so 。
如果配置文件中有路径,Mono将使用该路径并忽略ldconfig缓存和LD_LIBRARY_PATH。如果没有路径,Mono将尝试使用不同后缀的库名称以及引用ldconfig缓存和LD_LIBRARY_PATH。
我在我的软件包规范中处理它的方法是添加%post任务来编辑/ mono / config并从条目中删除路径。 RobFlum