嵌入单声道;GC中的致命错误";:&引用;“根集太多”; 我在C++应用程序中嵌入MMOO,并通过DLL库链接,然后通过< LoadLibrary > 加载到应用程序中。

嵌入单声道;GC中的致命错误";:&引用;“根集太多”; 我在C++应用程序中嵌入MMOO,并通过DLL库链接,然后通过< LoadLibrary > 加载到应用程序中。,dll,mono,Dll,Mono,当应用程序启动且dll运行时链接发生时,mono运行时似乎无法使用“过多根集”消息初始化自身。我不确定何时以及如何初始化运行时本身(我认为它发生在mono\u jit\u init上,但在调用任何mono函数之前会弹出错误。如果我尝试手动加载它而不是依赖mono.lib导入库,则错误正好发生在LoadLibrary上) 我成功地将它嵌入到独立的应用程序中,所以我假设它与应用程序加载dll的方式有关,但我不知道具体是什么 有什么线索吗?这可能是Boehm GC在windows中工作方式的一个限制:

当应用程序启动且dll运行时链接发生时,mono运行时似乎无法使用“过多根集”消息初始化自身。我不确定何时以及如何初始化运行时本身(我认为它发生在
mono\u jit\u init
上,但在调用任何mono函数之前会弹出错误。如果我尝试手动加载它而不是依赖
mono.lib
导入库,则错误正好发生在LoadLibrary上)

我成功地将它嵌入到独立的应用程序中,所以我假设它与应用程序加载dll的方式有关,但我不知道具体是什么


有什么线索吗?

这可能是Boehm GC在windows中工作方式的一个限制:它在LoadLibrary时钩住操作系统,以获取已创建线程和已加载库的通知(这就是为什么在LoadLibrary()时而不是在mono_jit_init()时出现问题的原因)

或者,在初始化GC时,您可能已经加载了很多线程和库。如果你直接将应用程序链接到mono,问题是否会消失?如果是,这应该是您当前的解决方法


将来(或者如果从git构建mono),您可能可以使用SGen GC,它不应该出现此问题。

刚刚执行了直接链接mono的测试,但没有成功,但至少这次它在
mono_jut_init(“Program.exe”)
调用上崩溃(没有任何信息)。所以我想这是另一个问题。至于另一个问题,
mono\u set\u dirs
有帮助,所以现在它可以工作了。