将 mono 与嵌入它的 c++ 应用程序捆绑在一起
Posted
技术标签:
【中文标题】将 mono 与嵌入它的 c++ 应用程序捆绑在一起【英文标题】:Bundling mono with a c++ app that embeds it 【发布时间】:2013-05-13 23:04:14 【问题描述】:我创建了一个示例 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");
强制使用特定框架
【问题讨论】:
【参考方案1】:Mono 由 2 个不同的部分组成:
用 C 编写的基本运行时,可嵌入,如您的 OQ 中所述 很多类库,大部分是用 C# 编写的。这些不与运行时一起嵌入,而是驻留在 GAC 中基本上,您需要提供自己的 GAC - 这很容易做到,只需将它带入您的应用文件夹结构,然后将 MONO_GAC_PREFIX
环境变量设置为您安装的任何位置。
【讨论】:
如果我设置了这个环境变量并且我的用户安装了单声道会发生什么?我的自定义单声道不会总是执行而不是我用户的单声道吗? 效果很好,谢谢!! #include以上是关于将 mono 与嵌入它的 c++ 应用程序捆绑在一起的主要内容,如果未能解决你的问题,请参考以下文章