【问题标题】:C# as a scripting language [duplicate]C#作为脚本语言[重复]
【发布时间】:2012-10-09 13:19:52
【问题描述】:

可能重复:
Best way to call Managed .NET code from Unmanaged code

我很想知道是否可以将 C# 用作托管在 c++ 本机应用程序中的脚本语言。我已经在自己的游戏引擎上工作了 5 年,但我从未接触过它的脚本方面。我喜欢在 Unity 中为游戏中的不同对象编写 C# 脚本的方式。

我做了一些搜索,但找不到任何实际使用的东西。

请注意,我的问题与 .Net 无关,而是与作为通用语言的 C# 有关。

只是为了确保,我会声明:我不想从 C# 调用本机 c++。我想要反过来。

如果有人能指出一些资源,我将不胜感激。

【问题讨论】:

  • 听起来可行,只要你想调用的有一个托管接口。
  • 我认为this 可能比建议的副本更合适。虽然我不会说它是完全重复的
  • C# 并不是真正设计成一种脚本语言。您是否考虑过(如果可能)使用 JavaScript?看看 Google 的 V8 引擎(我相信它已经是 C++),你可以从 JavaScript 中挂钩原生 C++ 对象......诚然 JavaScript 是为 Web 设计的,但它可以适应其他应用程序。
  • 这很简单。只需将代码编译成 dll,然后加载编译后的文件作为参考。
  • IronPython、IronRuby 或 V8 (ECMAScript) 如果您希望动态编写脚本,将是比 C# 更好的方法。

标签: c# c++ native unity3d


【解决方案1】:

是的,您要做的是在您自己的应用程序中托管 CLR。这是一篇 MSDN 文章。

http://msdn.microsoft.com/en-us/magazine/cc301479.aspx

那篇文章的作者也有一本书,涵盖了它的所有方面。一旦 CLR 在您的应用程序中启动并运行,如果您想要真正的脚本,您将需要动态编译代码,并且 cirrus 提供了一些有关如何执行此操作的链接。

您不可避免地还需要将部分主应用程序公开到 CLR 命名空间中。否则,您将无法访问主托管应用程序的任何特定功能。

编辑:当我说“真正的脚本”时,我的意思是您在运行时为您的脚本使用扩展名为 .cs 的文本文件。预先编译它们然后将 .DLL 包含在托管应用中会更有效,但是您可以两种方式都这样做。

【讨论】:

【解决方案2】:

【讨论】:

    【解决方案3】:

    您可能想查看 Rickard Nilsson 的 CSRepl 的来源。这是一个 C# 交互式解释器。它不托管 CLR,因为它是托管的,而是创建 C# 脚本环境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2012-09-22
      • 2014-03-13
      • 1970-01-01
      • 2011-07-16
      • 2010-12-22
      相关资源
      最近更新 更多