Приложение Mono Winforms в Linux: текст не отображается - PullRequest
1 голос
/ 23 декабря 2009

Как правило, У меня были проблемы с переносом приложений .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

1 Ответ

2 голосов
/ 23 декабря 2009

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

Больше информации здесь: https://bugzilla.novell.com/show_bug.cgi?id=549882

...