获取/编译用于嵌入的Mono-2.0.dll

获取/编译用于嵌入的Mono-2.0.dll,dll,mono,Dll,Mono,我正在尝试使用mono在C应用程序中实现一些脚本(参见本页)。但是,我需要mono-2.0.dll才能工作。 首先,我认为它包含在mono的二进制分布中。但我在mono安装文件夹中找不到它 我也曾尝试自己构建mono,但构建总是以错误(未解析的符号、读写保护的文件等)结束。我尝试了cygwin和VS构建 经过快速搜索,我找到了其他有类似问题的人。但不幸的是,没有对我有效的解决方案 有没有一种解决方案可以轻松编译mono-2.0.dll或获取二进制文件 谢谢编辑 在mono安装文件夹的bin目录中

我正在尝试使用mono在C应用程序中实现一些脚本(参见本页)。但是,我需要mono-2.0.dll才能工作。 首先,我认为它包含在mono的二进制分布中。但我在mono安装文件夹中找不到它

我也曾尝试自己构建mono,但构建总是以错误(未解析的符号、读写保护的文件等)结束。我尝试了cygwin和VS构建

经过快速搜索,我找到了其他有类似问题的人。但不幸的是,没有对我有效的解决方案

有没有一种解决方案可以轻松编译mono-2.0.dll或获取二进制文件

谢谢编辑

在mono安装文件夹的bin目录中可以找到您正在查找的库。实际上,安装后,
MONO\u INSTALLATION\u PATH\bin\
目录中有两个库:
libmonoboehm-2.0.dll
libmonosgen-2.0.dll
(必须选择或GC实现)

例如,如果要使用Boehm实现,可以创建如下符号链接
libmono-2.0.dll->/opt/mymono/bin/libmonobehm-2.0.dll
。就这些(我想)

但是,即使不创建任何符号链接,也可以引用库monoboehm-2.0.dll或monosgen-2.0.dll而不是mono-2.0.dll。问题是(我想)你找错了图书馆的名字

无论如何,下面是从cygwin编译mono必须遵循的步骤

结束编辑

我设法用cygwin从Windows8编译Mono(我想,它也应该适用于Windows7)

为了完成mono虚拟机和您请求的库,我必须遵循以下步骤:

  • 下载并安装新的32位cygwin安装(即使使用Windows 64位,也不要使用cygwin的64位版本)。在我的情况下,cygwin版本是
    2.844(32位)
    ,我的操作系统是Windows 8 64位。即使您已经有了一个cygwin环境,最好(IMHO)将其删除并安装新的cygwin环境

  • cygwin的安装路径(至少在我的情况下)应该是:C:\cygwin

  • 使用cygwin,您必须安装一些运行setup-86.exe的必需依赖项。没有它们,您将无法从cygwin编译mono:

    autoconf,automake,bison,gcc-core,gcc-g++,mingw-gcc,libtool,make,python,automake,bison,gcc,gdb,gettext,intltool,libiconv,libtool,pkg-config,vim

  • 打开cygwin控制台并运行以下命令:

    Me@mewin8 ~
    $mkdir-p/opt/mono323

    Me@mewin8 ~
    $mkdir-p/opt/mymono

    Me@mewin8 ~
    $cd/opt

    Me@mewin8/opt
    $git克隆https://github.com/mono/mono.git

    Me@mewin8/opt
    $cd单声道

    Me@mewin8/opt/mono
    $git子模块初始化

    Me@mewin8/opt/mono
    $git checkout--跟踪原点/mono-3.4.0-branch

  • 在cygwin控制台外部下载Windows版mono(从cygwin编译mono时需要它):

  • 在C:\cygwin\opt\mono323中安装mono for Windows

  • 再次转到cygwin控制台并运行以下命令:

    Me@mewin8 ~
    $cd/opt/mono

    Me@mewin8/opt/mono
    $export PATH=$PATH:/opt/mono323/bin

    Me@mewin8/opt/mono
    $./autogen.sh--host=i686-pc-mingw32--prefix=/opt/mymono/

    Me@mewin8/opt/mono
    $make

  • 编译以错误结束。请参阅此线程:解决方案:

    Me@mewin8/opt/mono
    $vim/usr/i686-pc-mingw32/sys root/mingw/include/ddk/ntapi.h

    注释掉这一行
    typedef PVOID PEXECUTION_STATE如果您遵循了与我相同的步骤,那么要注释掉的行应该是数字49。您必须完成
    //typedef PVOID PEXECUTION\u状态

  • 重新启动编译:

    Me@mewin8/opt/mono
    $make clean

    Me@mewin8/opt/mono
    $make

    Me@mewin8/opt/mono
    $make安装

  • 您可以在此路径中找到所请求的库(实际上,您已经完成了两个库):

    • 实现:
      /opt/mymono/bin/libmonoboehm-2.0.dll

    • 实现:
      /opt/mymono/bin/libmonosgen-2.0.dll

    您可以创建如下符号链接:
    /opt/mymono/lib/libmono-2.0.dll->/opt/mymono/bin/libmonobehm-2.0.dll
    ;或者像这样:
    /opt/mymono/lib/mono-2.0.dll->/opt/mymono/bin/libmonoboehm-2.0.dll
    (任何适合您的)

    取决于您将如何使用该库,符号链接对您来说是否有趣

  • 此外,如果gcc/ld在尝试构建您自己的程序(我指的是您要嵌入mono的程序)时可能找不到您的库,并且您尝试从cygwin控制台编译,您可以这样做:

    export LD\u LIBRARY\u PATH=/opt/mymono/lib
    请参见:


  • 我只知道这些。希望它能帮助你。。。至少我尽力了

    你是说libmono-2.0。那么?我是说mono-2.0.dll,就像我提到的页面中的一样。但在Linux上,它可能被称为libmono-2.0.so。我使用Windows7。谢谢你,这正是我想要的。不幸的是,在mono嵌入文档页面上,他们提到了误导我的mono-2.0.dll。谢谢你的澄清。