C++ 嵌入Mono:找不到Mono-2.0.dll

C++ 嵌入Mono:找不到Mono-2.0.dll,c++,mono,embed,mono-embedding,C++,Mono,Embed,Mono Embedding,我正在使用VS2012安装windows 8.1 我正在尝试将Mono CLR嵌入到C项目中。出了一些问题后,我现在正在编译它。 我在文章中使用了.def文件: 请注意,该文件显示:LIBRARY mono-2.0.dll 当我运行它时,我得到一个错误,mono-2.0.dll无法定位 我已经安装了mono-3.2.3,但在任何地方都看不到mono-2.0.dll 哪个mono.dll实现了mono\uxxxapi(比如mono\ujit\uinit) 我是否需要设置env vars以使操作系统

我正在使用VS2012安装windows 8.1

我正在尝试将Mono CLR嵌入到C项目中。出了一些问题后,我现在正在编译它。 我在文章中使用了.def文件: 请注意,该文件显示:LIBRARY mono-2.0.dll

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

我已经安装了mono-3.2.3,但在任何地方都看不到mono-2.0.dll

  • 哪个mono.dll实现了mono\uxxxapi(比如mono\ujit\uinit)
  • 我是否需要设置env vars以使操作系统知道mono文件夹
  • 我有点担心,文件中说mono-2.0适用于较旧的版本,应该使用“mono”-但mono.dll也不存在…

    请参见以下答案:

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

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

    我从来没有在Windows中使用过嵌入式Mono(我总是使用Linux),但可能会将
    .def
    文件中的名称更改为程序可以使用的库名称

    例如,对于Boehm,您必须下载并编辑它,如下所示:

    ; file generated by create-windef.pl
    LIBRARY libmonoboehm-2.0.dll
    EXPORTS
    
    对于SGen,只需按以下方式下载并编辑:

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

    这两者的区别是什么?它仍然说找不到程序集(现在是libmonosgen-2.0.dll)。我需要设置环境变量吗?@obiwanjacobi关于第一个问题:区别在于GC实现。斯根应该比博姆更好。关于第二个:这取决于你是如何编译你的程序的。例如:您为
    CFLAGS
    LDFLAGS
    选项使用了哪些路径?或者更好:您使用了什么命令来编译和链接您的程序?我不知道CFLAGS和LDFLAGS是什么。我刚刚在VS2012中设置了该项目。查看编译器和链接器的命令行,没有使用任何标志(C或LD)。但是我将bin文件夹添加到PATH环境变量中,不再出现该错误(现在是一个完全不同的错误;-)@obiwanjacobi我以为您使用的是gcc而不是visualstudio。我想如果你的libmonosgen-2.0.dll文件与你的.exe文件位于同一路径,它也应该可以工作。@Gooseman:你能在Mono文档中编辑以修复过时的信息吗?也许可以挽救下一个在这个问题上绊倒的人:)