使用MONO讓.NET程式脫離.NET Framework運作是個不錯的方法,網上已有很多介紹。但是MONO運作.NET程式也有讓人郁悶的地方,比如你隻能使用“mono 你的NET程式名.exe”這樣的指令運作你的.NET程式(當然,你也可以用C++寫個程式來調用。),雖然也不複雜,但是程式運作時MONO黑乎乎的 指令行視窗實在礙眼。
前些日子看了下MONO官方Embedding Mono介紹,于是動手寫了個,用起來爽多了,看下面C++代碼:
#include "stdafx.h"
#include <glib/glib.h>
#include <mono/jit/jit.h>
#include <mono/metadata/assembly.h>
#include <mono/metadata/environment.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
int main(int argc, char* argv[])
{
int retval;
char *file;
file = ".\\demo.exe"; // .NET程式路徑
//argv[0] = file;
mono_set_dirs(".\\lib", NULL);
MonoDomain *domain;
MonoAssembly *assembly;
domain = mono_jit_init (file);
assembly = mono_domain_assembly_open (domain, file);
if (!assembly) exit (2);
mono_jit_exec (domain, assembly, argc, argv);
retval = mono_environment_exitcode_get ();
mono_jit_cleanup (domain);
return retval;
}