Взаимодействие языков в .NET (CLR) и Mono - PullRequest
2 голосов
/ 11 марта 2010

Допустим, мне нужно использовать Python и C ++. Я могу вызвать функцию Python из C ++ с Python C API, и обратное возможно с SWIG или эквивалентным.

Как насчет .NET? Я знаю, что есть IronPython и C #, которые, наконец, создают сборку .NET. Существует ли какой-либо четко определенный механизм взаимодействия языков в .NET, чтобы можно было использовать любые вызовы функций из любого языка?

  • Если да, то каковы механизмы для этого?
  • Если нет, что можно сделать для вызова функций с одного языка на другой?
  • Механизм .NET такой же, как и MONO, с точки зрения взаимодействия языков?

Ответы [ 2 ]

5 голосов
/ 11 марта 2010

Если вы говорите о IronPython и C #, то эти два языка могут беспрепятственно взаимодействовать через CLI (то есть, Common Language Infrastructure ). Это означает, что методы в коде C # доступны напрямую из IronPython и наоборот.

Для других языков, которые не компилируются в байт-код .NET напрямую (например, Lua), вам придется использовать P / Invoke для вызова C API (или использовать тот, который уже написан кем-то другим, например ) LuaInterface для Lua).

Mono в основном то же самое, вы просто должны быть осторожны с вашими объявлениями P / Invoke (то есть вы не можете ссылаться на "lua51 .dll ", потому что в Linux есть .so файлы, а не .dll )

3 голосов
/ 11 марта 2010

Я не знаю о Mono.

...