获取/编译Mono-2.0.dll以进行嵌入

时间:2014-04-09 11:53:37

标签: dll mono

我正在尝试使用mono实现C应用程序中的一些脚本(参见本页http://www.mono-project.com/Embedding_Mono)。但是我需要mono-2.0.dll来实现这一点。 首先我认为它包含在单声道的二进制分配中。但我在单声道安装文件夹中找不到它。

我也尝试自己构建单声道,但构建总是以错误结束(未解析的符号,读写保护的文件,以及许多其他)。我尝试了cygwin和VS版本。

快速搜索后,我发现了其他有类似问题的人。但不幸的是,没有任何解决方案对我有用。

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

由于

1 个答案:

答案 0 :(得分:3)

修改

恕我直言,您正在寻找的库可以在单声道安装文件夹的bin目录中找到。实际上,安装mono 3.2.3后,MONO_INSTALLATION_PATH\bin\目录中有两个库:libmonoboehm-2.0.dlllibmonosgen-2.0.dll(您必须选择BoehmSGen GC实现)

如果你想使用Boehm实现,你可以创建一个像libmono-2.0.dll -> /opt/mymono/bin/libmonoboehm-2.0.dll这样的符号链接。这就是全部(我认为)

但即使没有创建任何符号链接你也可以工作,你可以引用库monoboehm-2.0.dll或monosgen-2.0.dll而不是mono-2.0.dll。问题是(我认为)你正在寻找错误的图书馆名称。

无论如何,接下来是为了从cygwin编译单声道必须遵循的步骤。

结束编辑

我设法使用cygwin从Windows 8编译Mono(我想,它也适用于Windows 7)

这些是我必须遵循的步骤才能完成单声道虚拟机和您请求的库:

  1. 下载并安装32位的全新cygwin安装(即使您使用的是Windows 64位,也不要使用cygwin的64位版本)在我的情况下,cygwin版本为{{ 1}}和我的操作系统是Windows 8 64位。即使你已经有了一个cygwin环境,也应该更好(恕我直言)删除它并安装新的cygwin环境。

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

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

      

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

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

    2.844 (32 bit)

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

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

    Me@mewin8 ~ $ cd /opt

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

    Me@mewin8 /opt $ cd mono

    Me@mewin8 /opt/mono $ git submodule init

  5. 用于Windows的cygwin控制台下载单声道(在从cygwin编译单声道时你将需要它):http://download.mono-project.com/archive/3.2.3/windows-installer/mono-3.2.3-gtksharp-2.12.11-win32-0.exe

  6. 在C:\ cygwin \ opt \ mono323中安装适用于Windows的单声道

  7. 再次访问cygwin控制台并运行以下命令:

    Me@mewin8 /opt/mono $ git checkout --track origin/mono-3.4.0-branch

    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/

  8. 编译以错误结束。请参阅此主题:mono from git will not build on cygwin 32 解决方案:

    Me@mewin8 /opt/mono $ make

    注释掉这一行Me@mewin8 /opt/mono $ vim /usr/i686-pc-mingw32/sys-root/mingw/include/ddk/ntapi.h如果您按照与我相同的步骤操作,则要注释掉的行应该是数字49.您必须完成typedef PVOID PEXECUTION_STATE;

  9. 重新开始编译:

    //typedef PVOID PEXECUTION_STATE;

    Me@mewin8 /opt/mono $ make clean

    Me@mewin8 /opt/mono $ make

  10. 您可以在此路径中找到所需的库(实际上您已完成两个):

    您可以创建如下符号链接:/opt/mymono/bin/libmonosgen-2.0.dll;或者像这样:/opt/mymono/lib/libmono-2.0.dll -> /opt/mymono/bin/libmonoboehm-2.0.dll(无论对你有用)

    根据您使用图书馆的方式,符号链接可能对您有意义。

  11. 此外,如果gcc / ld在尝试构建自己的程序时可能找不到你的库(我的意思是你要嵌入单声道的程序),你试图从cygwin控制台编译你可以做这样:

    /opt/mymono/lib/mono-2.0.dll -> /opt/mymono/bin/libmonoboehm-2.0.dll请参阅:man ld

  12. 这就是我所知道的。希望它会帮助你......至少我尽力了!