Встраивание моно в Delphi Win32

Для тех, кто все еще получает «требуется libxml2 версии 2.6.21 или новее!» сообщение, удалив --use-system-library из шага 2 hlv выше, сработало для меня.

sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri:1.6.4.1 -- --with-xml=/usr/local/Cellar/libxml2/2.9.2/
7
задан David Taylor 12 June 2011 в 04:49
поделиться

3 ответа

Кажется, что Mono можно собрать с помощью mingw, хотя большинство ссылок, которые я нашел кросс-скомпилированными из Linux, например, http://www.mono-project.com/Cross-compiling_Mono_for_Windows

I Я бы сказал, что ваш первый приоритет - это поиск библиотеки libmono, которая

  • не использует cygwin (поверьте мне)
  • , как известно, работает, также вне mingw (избегайте возможных искажений C ++, специфичных для mingw, если используется C ++)
  • Желательно иметь читаемый заголовок.

Если вы найдете или создадите его как DLL (чтобы удовлетворить правильное замечание mghie), напишите заголовок (как предлагает Stijn), он может работать.

Это не будет тривиально, виртуальные машины не совсем тривиальные звери и ожидают проблем в обычных межъязыковых проблемных областях: инициализация библиотеки (порядок), маска исключений FPU и обработка исключений в целом. Отчасти поэтому я сказал " изучение того, как он взаимодействует с другими компиляторами, может дать указания, как правильно с этим справиться.

Обратите внимание, что в учебнике mono есть инициализатор библиотеки mono, но это не означает, что все библиотеки, которые использует mono, инициализированы должным образом. В частности, в инициализации может потребоваться libc mingw, поскольку они обычно инициализируются через ctors. Мой (самый начальный) код клея mingw находится здесь:

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/fpmingw.pas?view=markup

С другой стороны , в DLL он может быть инициализирован с помощью процедуры инициализации DLL.

Я сам смог построить GDB как библиотеку и использовать ее (хотя статически в FPC у меня не было мотивации создавать DLL с тех пор, как был вариант)

Обратите внимание, что если вам действительно нужно сделать это самостоятельно, это НЕ простой способ.

изучение того, как он взаимодействует с другими компиляторами, может дать указания, как правильно с этим справиться.

Обратите внимание, что в учебнике mono есть инициализатор библиотеки mono, но это не означает, что все библиотеки, которые использует mono, инициализированы должным образом. В частности, в инициализации может потребоваться libc mingw, поскольку они обычно инициализируются через ctors. Мой (самый начальный) код клея mingw находится здесь:

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/fpmingw.pas?view=markup

С другой стороны , в DLL он может быть инициализирован с помощью процедуры инициализации DLL.

Я сам смог построить GDB как библиотеку и использовать ее (хотя статически в FPC у меня не было мотивации создавать DLL с тех пор, как был вариант)

Обратите внимание, что если вам действительно нужно сделать это самостоятельно, это НЕ простой способ.

Обратите внимание, что в учебнике mono есть инициализатор библиотеки mono, но это не означает, что все библиотеки, которые использует mono, инициализированы правильно. В частности, в инициализации может потребоваться libc mingw, поскольку они обычно инициализируются через ctors. Мой (самый начальный) код клея mingw находится здесь:

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/fpmingw.pas?view=markup

С другой стороны , в DLL он может быть инициализирован с помощью процедуры инициализации DLL.

Я сам смог построить GDB как библиотеку и использовать ее (хотя статически в FPC у меня не было мотивации создавать DLL с тех пор, как был вариант)

Обратите внимание, что если вам действительно нужно сделать это самостоятельно, это НЕ простой способ.

Обратите внимание, что в учебнике mono есть инициализатор библиотеки mono, но это не означает, что все библиотеки, которые использует mono, инициализированы правильно. В частности, в инициализации может потребоваться libc mingw, поскольку они обычно инициализируются через ctors. Мой (самый начальный) код клея mingw находится здесь:

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/fpmingw.pas?view=markup

С другой стороны , в DLL он может быть инициализирован с помощью процедуры инициализации DLL.

Я сам смог построить GDB как библиотеку и использовать ее (хотя статически в FPC у меня не было мотивации создавать DLL с тех пор, как был вариант)

Обратите внимание, что если вам действительно нужно сделать это самостоятельно, это НЕ простой способ.

В частности, в инициализации может потребоваться libc mingw, поскольку они обычно инициализируются через ctors. Мой (самый начальный) код клея mingw находится здесь:

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/fpmingw.pas?view=markup

С другой стороны , в DLL он может быть инициализирован с помощью процедуры инициализации DLL.

Я сам смог построить GDB как библиотеку и использовать ее (хотя статически в FPC у меня не было мотивации создавать DLL с тех пор, как был вариант)

Обратите внимание, что если вам действительно нужно сделать это самостоятельно, это НЕ простой способ.

В частности, в инициализации может потребоваться libc mingw, поскольку они обычно инициализируются через ctors. Мой (самый начальный) код клея mingw находится здесь:

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/ide/fpmingw.pas?view=markup

С другой стороны , в DLL он может быть инициализирован с помощью процедуры инициализации DLL.

Я сам смог построить GDB как библиотеку и использовать ее (хотя статически в FPC у меня не было мотивации создавать DLL с тех пор, как был вариант)

Обратите внимание, что если вам действительно нужно сделать это самостоятельно, это НЕ простой способ.

6
ответ дан 7 December 2019 в 01:25
поделиться

Эта статья Руди Велтуиса показывает пример того, как связать C lib с Delphi. Немного поработав, можно будет получить доступ к mono_jit_init из Delphi, используя этот метод.

2
ответ дан 7 December 2019 в 01:25
поделиться

Возможно, вы захотите взглянуть на http://www.remobjects.com/hydra.aspx .

2
ответ дан 7 December 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: