Я давний разработчик C #, но плохо знаком с Mono и, особенно, с Gtk #.Я разработал небольшое приложение с использованием C # и Gtk #.Мне нужно, чтобы это приложение работало на Windows, Linux и Mac, поэтому я решил пойти на Mono, и пока, похоже, это крутой фреймворк.
Что мое простое приложение делает, так это запускает веб-сервер XSPна основе локального каталога и порта, выбранного пользователем.В идеале я хотел бы, чтобы мое приложение работало без необходимости сначала устанавливать Mono Framework, но для начала это не must .Я использую следующие библиотеки:
using System;
using Gtk;
using System.Net;
using Mono.WebServer;
using System.Diagnostics;
Я занимаюсь разработкой на Mac (Snow Leopard, 10.6.7).Мой исполняемый файл отлично работает на моем Mac.Но у меня проблемы с Ubuntu и Windows.Мое приложение частично работает на Ubuntu (11.04) - оно запускается и, кажется, работает, но не удается, когда я пытаюсь запустить веб-сервер XSP, который выглядит ожидаемым, поскольку Mono.Webserver , вероятно, не установлен на моемUbuntu машина.В Windows (7, 64-разрядная версия) мое приложение сразу падает, когда я дважды щелкаю по нему.Отчет о сбое сообщает мне, что произошла ошибка System.IO.FileNotFoundException .Вероятно, из-за той же недостающей библиотеки XSP?
Во всяком случае, я посмотрел в Интернете и узнал о mkbundle
.Я выполнил следующие настройки в соответствии с различными ветками форума:
export AS="as -arch i386"
Я перешел в каталог / bin / Release моего проекта и затем выполнил следующую команду:
mkbundle MivandoLocalServer.exe -o MivandoLocalServer --deps
Но я получаю следующий вывод, который в конечном итоге дает сбой:
Compiling:
as -arch i386 -o temp.o temp.s
cc -g -o MivandoLocalServer -Wall temp.c `pkg-config --cflags --libs mono-2` temp.o
Package mono-2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `mono-2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'mono-2' found
temp.c:2:36: error: mono/metadata/assembly.h: No such file or directory
temp.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘assembly_bundle_MivandoLocalServer_exe’
temp.c:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
temp.c:18: error: ‘NULL’ undeclared here (not in a function)
temp.c: In function ‘mono_mkbundle_init’:
temp.c:22: warning: implicit declaration of function ‘mono_register_bundled_assemblies’
temp.c:22: error: ‘bundled’ undeclared (first use in this function)
temp.c:22: error: (Each undeclared identifier is reported only once
temp.c:22: error: for each function it appears in.)
temp.c: In function ‘main’:
temp.c:114: warning: implicit declaration of function ‘mono_set_dirs’
[Fail]
Я действительно не знаю, что делать отсюда.У меня установлен MacPorts, и я прочитал, что это может вызвать некоторые проблемы с каталогом pkg-config .Это правда?Если да, что я должен сделать, чтобы это работало?
Я надеюсь, что кто-нибудь сможет мне помочь.Спасибо!
С уважением, Себастьян
PS.Я также разместил этот вопрос на форумах на домашней странице Mono, но пока без ответов.
Обновление: Я подозреваю, что MacPorts вмешивается в мой каталог pkg-config установка.Когда я ввел следующие команды в свой терминал, mkbundle позволил мне скомпилировать.Но я все еще сталкиваюсь с некоторыми проблемами.
export PKG_CONFIG_PATH="/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/"
export AS="as -arch i386"
export CC="cc -arch i386"
Выполнение следующей команды mkbundle
приводит к Unix-архиву объемом 4,9 МБ, который включает все необходимые зависимости.Когда я дважды щелкаю этот новый файл на моем Mac, появляется окно терминала и запускается мое приложение.Милая!Но это не работает ни в Windows, ни в Ubuntu.
mkbundle MivandoLocalServer.exe -o MivandoLocalServerBundle --deps -z
Я хотел бы получить пакетный исполняемый файл, который можно запустить в Windows и Ubuntu.До сих пор я не нашел решения, позволяющего мне это делать.Я попытался установить MonoDevelop на мой компьютер с Windows 7, скопировать мое решение и собрать его там.Но так как мое приложение зависит от библиотеки Mono.WebServer2
, я не могу собрать ее в Windows.Мне не удалось найти Mono.WebServer2.dll
для загрузки для Windows нигде в Интернете.