您如何使用C ++中嵌入的mono编译C#代码? 如何使用C ++编译.cs文件在DLL中链接Mono

问题描述

如何使用C ++编译.cs文件

我已经搜索了Mono的所有文档,但找不到从C ++的嵌入式mono运行时中编译C#代码方法。我知道如何使用来自C ++的嵌入式mono函数打开C#.exe汇编文件,但是我似乎找不到找到一种方法来仅将.cs文件编译为{ C ++。

我还设法通过Windows提供的CreateProcessA()函数调用.exe文件来编译.cs文件,但是这不能给我记录错误方法,甚至无法检查是否它成功地进行了编译等。(也感觉像是 hack ,而不是官方的解决方案)。我需要这样做的主要原因是,我可以通过检测源代码何时更改以及条件的另一子集来即时重新编译C#脚本。

有人知道使用嵌入式Mono运行时正确编译C#文件方法吗?在哪里可以找到相关文档?目前,我一直在这里使用文档:http://docs.go-mono.com/?link=xhtml%3adeploy%2fmono-api-assembly.html,该文档在大多数情况下提供了足够的信息。

在DLL中链接Mono

此外,如果您熟悉嵌入mono,您知道如何在dll中使用它吗?我已经成功地在控制台应用程序中成功链接和编译了它,但是当我尝试将其编译为动态库的一部分时,出现了无法解决的外部符号错误(特别是带有前缀__imp *的功能)。

最后,我正在使用mono嵌入C#作为游戏引擎的脚本语言,但是我不知道是否有更好的(较小的)解决方案可以使用。如果您知道更好的解决方案,请随时提出建议。

解决方法

mono 运行时是一个“运行时”,仅用于运行代码, 但是如果你已经安装了 csc 命令,那么你可以使用这个:

#include <cstdlib>
int main(){
   system("csc yourfile.cs")
   return 0;
}