.NET程序脱离框架进阶 之 Embedding Mono

本文介绍了一种通过C++代码嵌入Mono的方式来运行.NET程序的方法,避免了直接命令行启动带来的不便。该方法包括初始化Mono、加载.NET程序集及清理资源等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  使用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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值