首页 新闻 搜索 专区 学院

使用mono脱离.net框架运行winform程序时不能正常调用winapi?

0
悬赏园豆:20 [已关闭问题]

准备把现有的项目改动一下

让不安装.net环境的windows机器也能正常运行

用mono试了一下,似乎所有调用winapi的地方都没有反应?

是我调用的方法有问题,还是mono就不支持winapi?

各位谁有什么解决办法?

 

问题补充: 没有人接触过这方面的应用么??
lpyedge的主页 lpyedge | 菜鸟二级 | 园豆:330
提问于:2009-08-13 18:25
< >
分享
其他回答(2)
0

有可能是mono的组件没安装完

win下装mono,还不如装.net

izee | 园豆:127 (初学一级) | 2009-08-25 02:13
0

Mono 有一篇帮助专门讲在各种环境下运行API 的问题,见下面链接

http://www.mono-project.com/Interop_with_Native_Libraries

eaglet | 园豆:17119 (专家六级) | 2009-08-25 10:02
0

.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;
}

哎,不会写文章,直接上源码下载地址:http://www.xun6.com/file/0dcf46622/EmbeddingMono.zip.html
  压缩包中包含精简过的MONO框架(在Release目录中)仅包含demo所需的组件,所以不适合你的程序,你可以自行下载MONO框架进行精简,这方面网上已有很多文章,我就不再罗嗦了。

悠哉悠哉 | 园豆:205 (菜鸟二级) | 2010-09-12 11:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册