1

我发现自己无法在 Mono 3.0(在 OpenSUSE 12.3 x64 上)中运行任何 WinForms 应用程序。我得到的问题是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 的路径中的一个事实,并且我还尝试将 gdiplus 的 dllmap 条目更改为/etc/mono/config直接指向它,并且错误仍然存​​在。

我有一个完整的尝试在MONO_LOG_LEVEL="debug" 这里运行 MoMA 的日志。它似乎忽略了配置文件并直接在错误的地方寻找 SO。

有没有办法让它在正确的地方寻找这个 SO?

4

1 回答 1

3

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

我在包规范中处理它的方式是添加一个 %post 任务来编辑 /mono/config 并从条目中删除路径。罗布卢姆

于 2013-10-26T01:54:24.180 回答