1

我想将 Mono嵌入到 64 位 Mac OSX 应用程序中(从 Windows C++ 移植,一切正常)。由于只有 32 位 Mono 可用于 Mac OSX 的预编译,因此我设法按照本手册构建了自己的 64 位 Mono 版本。

在 XCode 中调试我的 64 位应用程序时,单声道嵌入初始化失败并显示“找不到或无法加载程序集 mscorlib.dll。它应该已安装在 `usr/local/lib/mono/4.5' 目录中。 "

我可以进入生成此错误的代码(domain.c - mono_init_internal())。不幸的是,我的 mono 构建显然没有生成 4.5 目录。唯一可用的“.NET 版本”似乎是 2.0:存在 usr/local/lib/mono/2.0/mscorlib.dll,但根本没有 4.5 子目录。

我在构建中忘记了什么吗?

非常感谢您的支持。

4

2 回答 2

0

找到了。我的问题“我在构建中忘记了什么?”的答案 是是的!显然,默认情况下, ./configure; 制作; 编译所有可用的 .NET 平台(2.0、3.5.、4.0、4.5)。构建后,您可以在 {UnpackedTarBall}/mcs/class/lib 下找到它们 - 有 net_2_0、net_3_5、net_4_0 和 net_4_5 子目录。不幸的是,“make install”只安装.Net 2.0,如我原来的帖子中所述。我设法按以下顺序安装了其他配置文件:

$ cd {UnpackedTarBall}/mcs
$ make PROFILE=net_4_5 install

对其他配置文件(net_3_5、net_4_0)重复并替换上述内容。{UnpackedTarBall}/mcs/README 中有一些有用的提示。

于 2014-05-21T08:54:21.030 回答
0

另一种解决方案是采用 Mono 32 位分布,构建 64 个二进制文件(没有 MCS),然后将结果合并回来。

这是该项目的工作方式,以提供通用二进制文件。您可以调整它以替换二进制文件而不是合并它们。

于 2014-05-20T06:06:37.393 回答