Может ли компилятор Haxe конвертировать любой код С# в Haxe? - программирование

Может ли компилятор Haxe конвертировать любой код С# в Haxe?

Во-первых, я супер новичок в Haxe, поэтому я задаю вопрос super noob здесь, и у меня их 2.

1) Мой первый вопрос: я знаю, что компилятор Haxe может конвертировать из Haxe на любой другой язык (поддерживается), но может ли он конвертировать исходный код на другие языки (поддерживается) в Haxe?

2) Если он может это сделать, то насколько его возможно, как только он может конвертировать несколько файлов, скажем, в С# в Haxe, или если я дам огромное репо, например, скажем, это https://github.com/dotnet/corefx или https://github.com/tensorflow/tensorflow будет преобразовывать все в нем (я знаю, что это тоже много спросить, но в любом случае)

4b9b3361

Ответ 1

Нет, компилятор Haxe преобразуется только в одном направлении:

Код Haxe → (выбранная цель)

Для другого направления вам понадобится внешний инструмент, независимый от компилятора Haxe:

  • для ActionScript 3 → Haxe, as3hx (который, как утверждается, поддерживается Фондом Haxe)
  • для Java → Haxe, там JTransc
  • для С# → Haxe, я нашел CS2HX - не знаю, если это актуально вообще, но оно все еще использует старый хакс в своем описании ( "haXe" ), поэтому...

Ответ 2

Ответ Gama11 правильный, но -net-lib и externs должны быть добавлены, поскольку они позволяют использовать код С#/mono в вашем проекте haxe С#/mono.

Haxe может потреблять скомпилированный код для всех целей с использованием externs (определения компилятора) для использования в вашем проекте Haxe для этой же цели, для большинства целей вам необходимо создать подходящие externs вручную. Однако для некоторых целей (Java, С#, Flash) Haxe может автоматически генерировать требуемые externs, хотя и не всегда удачные, это может сделать довольно безболезненным использование существующих библиотек. Я нашел это очень успешным со вспышкой и имел разнообразный успех с целью Java, но он всегда улучшается и, возможно, один или два раза пробовал его с помощью mono (С# target). В коде hxml-complier вы можете написать.

-swf-lib my.swf
-java-lib my.jar
-net-lib my.dll

Вы не можете использовать файл aa swf или jar с проектом aС# или DLL с проектом flash или java, по крайней мере, не таким образом, хотя вы можете использовать swf с openfl и nme при настройке С++ с помощью специальных расширений parsing.

Технически для С# это будет описано в будущем руководстве Haxe более формально, чем у меня, см. ссылку на страницу уценки github для получения полной информации:

"Haxe может напрямую загружать сборные файлы .NET(.DLL) и преобразовывать его определения типов для использования в качестве типов Haxe. Для загрузки сборки .NET используйте опцию компилятора -net-lib library.dll. Затем Haxe автоматически анализирует типы, определенные в этом файле сборки, и сделать их доступными для импорта в виде типов Haxe." - Цитировать https://github.com/HaxeFoundation/HaxeManual/wiki/Haxe-C%23

Ответ 3

Каковы ваши намерения? Вы:

  • Попытка вашей логики написана в коде С# в проекте Haxe, нацеленном на С#?
  • Попытка вашей логики написана на С# -кодере в проекте Haxe, ориентированном на не-С#?

Для 1 вы можете использовать -net-lib, чтобы вы могли использовать библиотеку С# непосредственно в Haxe, поэтому вам не нужно вообще конвертировать код С# в Haxe.

Для 2 вам необходимо вручную перенести код С# на код Haxe или с помощью некоторых инструментов, упомянутых Gama11. Сам Хэкс не поддерживает такое преобразование.