0

我创建了一个示例 c++ 应用程序,它使用动态链接来嵌入单声道(如此处所述http://www.mono-project.com/Embedding_Mono)并使用 C# 编写脚本。只要将 mono 安装在全局程序集缓存 (GAC) 中,它就可以正常工作。

有没有办法将 mono 与我的 c++ 可执行文件捆绑在一起,以便我可以将它与我的 c++ 可执行文件一起安装?

我一直在看 mkbundle,但它看起来像是将 mono 与 c# 应用程序打包在一起。

编辑:重新格式化下面的答案

#include <cstdlib>
_putenv("MONO_GAC_PREFIX=C:\\cygwin\\usr\\local\\bin\\");
mono_set_dirs("C:\\cygwin\\usr\\local\\lib","C:\\cygwin\\usr\\local\\etc");

编辑:更正:我只需要在可执行文件的文件夹中复制/粘贴 mono-2.0.dll 并用于 mono_set_dirs("C:\\cygwin\\usr\\local\\lib","C:\\cygwin\\usr\\local\\etc");强制使用特定框架

4

1 回答 1

1

Mono 由 2 个不同的部分组成:

  • 用 C 编写的基本运行时,可嵌入,如您的 OQ 中所述
  • 很多类库,主要是用 C# 编写的。这些不与运行时一起嵌入,而是驻留在 GAC 中

基本上你需要提供你自己的 GAC - 这很容易通过将它带到你的应用程序文件夹结构中,然后将MONO_GAC_PREFIX环境变量设置为你安装的任何位置。

于 2013-05-13T23:09:56.207 回答