天天看點

.NET程式脫離架構進階 之 Embedding Mono

  使用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;

}

繼續閱讀