2

我在使用 VS2012 的 Windows 8.1 上。

我正在尝试按照http://www.mono-project.com/docs/advanced/embedding/将 Mono CLR 嵌入到 C 项目中。在一些问题之后,我现在正在编译它。我在文章中使用了 .def 文件: http: //github.com/mono/mono/blob/master/msvc/mono.def 注意这个文件说:LIBRARY mono-2.0.dll

当我运行它时,我得到一个无法找到 mono-2.0.dll 的错误。

我安装了 mono-3.2.3,但在任何地方都没有看到 mono-2.0.dll。

  1. 什么单声道 .dll 实现了 mono_xxx API(如 mono_jit_init)?
  2. 我是否需要设置 env-vars 以使操作系统知道单声道文件夹?

我有点担心文档指出 mono-2.0 是针对旧版本的,应该使用“mono”——但 mono.dll 也不存在......

4

2 回答 2

3

请参阅此答案:获取/编译 Mono-2.0.dll 以进行嵌入

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

(链接Boehm现在SGen重定向到同一网页)

我从未在 Windows 中使用过嵌入式 Mono(我总是使用 Linux),但也许将您的.def文件更改为您的程序可以工作的那些库名称。

例如,对于 Boehm,您必须下载mono.def并像这样编辑它:

; file generated by create-windef.pl
LIBRARY libmonoboehm-2.0.dll
EXPORTS

对于 SGen,只需下载monosgen.def并以这种方式编辑它:

; file generated by create-windef.pl
LIBRARY libmonosgen-2.0.dll
EXPORTS
于 2014-09-21T15:35:46.193 回答
0

在 Visual Studio 的属性管理器中,只需执行构建后事件即可将您的 dll 复制到可执行文件夹中。iirc dll 在 etc 文件夹中用于嵌入单声道。

于 2021-10-10T16:05:58.147 回答