可能是重复问题:
从非托管代码调用托管.NET代码的最佳方法
我很好奇是否可以在C++本地应用程序中使用C#作为脚本语言。我已经为自己的游戏引擎工作了5年,但从未涉及过脚本方面。我喜欢在Unity中编写不同对象的C#脚本。
我做了一些搜索,但没有找到任何实际有用的东西。
请注意,我的问题与.NET无关,而是与C#作为一种通用语言有关。
只是为了确保,我会声明这一点:我不想从C#调用本地c ++。 我希望反过来。
如果有人能指导我一些资源,我会很感激。
可能是重复问题:
从非托管代码调用托管.NET代码的最佳方法
我很好奇是否可以在C++本地应用程序中使用C#作为脚本语言。我已经为自己的游戏引擎工作了5年,但从未涉及过脚本方面。我喜欢在Unity中编写不同对象的C#脚本。
我做了一些搜索,但没有找到任何实际有用的东西。
请注意,我的问题与.NET无关,而是与C#作为一种通用语言有关。
只是为了确保,我会声明这一点:我不想从C#调用本地c ++。 我希望反过来。
如果有人能指导我一些资源,我会很感激。
是的,你想要做的就是在你自己的应用程序中托管CLR。这里有一篇MSDN文章介绍了如何进行操作。
http://msdn.microsoft.com/en-us/magazine/cc301479.aspx
该文章的作者还出版了一本涵盖所有方面的书籍。一旦你在应用程序中运行起CLR,如果你需要真正的脚本功能,你将需要动态编译代码,cirrus提供了一些链接来介绍如何实现此功能。
你不可避免地也需要将你主要应用程序的部分公开到CLR命名空间中。否则,你将无法访问主机应用程序的任何特定功能。
编辑:当我说“真正的脚本”时,我的意思是你在运行时使用扩展名为.cs的文本文件作为你的脚本。事先编译它们然后将带有托管应用程序的.dll包含进去会更高效,不过你可以两种方式都做。
看看CodeDOM。现在还有Reflection.Emit和Linq.Expressions - 这里有类似的问题;