Приложение Mono Winforms в Linux: некоторый текст не отображается

В целом у меня возникли трудности с переносом моих приложений .NET Windows Forms, созданных в Visual Studio 2008, на Mono/Linux. Проблема в том, что иногда некоторые типы текста не отображаются; там, где я ожидаю увидеть текст, просто пустота или неразборчивые знаки. На одной машине с Ubuntu весь текст отображался правильно, за исключением текста в диалоговых окнах из MessageBox.Show, который выглядел как крошечные неразборчивые черные метки. На другом компьютере с Ubuntu эта же программа работала нормально. Но затем я обновил эту машину с Ubuntu 9.4 до 9.10: теперь текст флажков и меток не отображается, но текст внутри текстовых полей и меток вкладок отображается.

Когда вы переносите приложение в Mono/Linux и у вас возникают проблемы с отображением текста, как вы его отлаживаете? Каковы ваши общие стратегии?

Я пропускаю шрифты, и как мне выяснить, какие шрифты отсутствуют?

В частности: я создал небольшую программу в Visual Studio, в которой был элемент управления вкладками с двумя вкладками и меткой на каждой. Он отлично работает в Visual Studio, но в Mono/Linux текст вкладок отображается, а текст меток не отображается.

Я использую Ubuntu 9.10 и установил следующие соответствующие пакеты: mono-gmcs libusb-1.0-0-dev mono-2.0-devel libmono-winforms2.0-cil.

Вот команда, которую я использовал для компиляции программы:

gmcs -unsafe -debug -target:exe -out:EventTest.exe
./Form1.cs ./Form1.Designer.cs ./Program.cs
-r:/usr/lib/mono/2.0/System.dll
-r:/usr/lib/mono/2.0/System.Core.dll
-r:/usr/lib/mono/2.0/System.Drawing.dll
-r:/usr/lib/mono/2.0/System.Windows.Forms.dll

Когда я запустил его с MONO_LOG_LEVEL=DEBUG, я получил несколько сообщений об ошибках:

(./EventTest.exe:8395): Mono-WARNING **: The request to load the assembly
mscorlib v1.0.5000.0 was remapped to v2.0.0.0
(./EventTest.exe:8395): Mono-WARNING **: The request to load the assembly
System.Windows.Forms v1.0.5000.0 was remapped to v2.0.0.0
(./EventTest.exe:8427): Mono-WARNING **: DllImport unable to load library
'lib/System/Library/Frameworks/Carbon.framework/Versions/Current/Carbon:
cannot open shared object file: No such file or directory'.

Почему он пытается загрузить версию 1.0, если я явно скомпилирован с версией 2.0? Почему он пытается загрузить Carbon (разве это не проблема Max OS?) Я приведу весь журнал, если вы хотите его увидеть.

Также было сообщение журнала о невозможности найти «libgdi32». Я добавляю символическую ссылку, используя приведенную ниже команду, и это удаляет сообщение об ошибке, но, похоже, не влияет на другие проблемы приложения.

sudo ln -s /usr/lib/wine/gdi32.dll.so /usr/lib/libgdi32.so

person David Grayson    schedule 23.12.2009    source источник


Ответы (1)


Кажется, есть проблемы с видеодрайверами, поставляемыми с Ubuntu 9.10.

Дополнительная информация находится здесь: https://bugzilla.novell.com/show_bug.cgi?id=549882

person jpobst    schedule 23.12.2009
comment
Большое спасибо! После большой работы мне удалось скомпилировать новый драйвер X.org Intel (xserver-xorg-video-intel 2.9.1) с нуля, и это решило мою проблему. Для получения дополнительной информации см.: bugs.launchpad. net/ubuntu/+source/xserver-xorg-video-intel/+bug/ intellinuxgraphics.org - person David Grayson; 24.12.2009