【问题标题】:Is "mono_add_internal_call" just with CLR-Hosting possible?“mono_add_internal_call”是否可以仅使用 CLR-Hosting?
【发布时间】:2015-11-04 00:58:43
【问题描述】:

在CLR-Hosting w/o using mono中是否有任何功能具有相同的可能性,例如“mono_add_internal_call”?

单声道

C++ 代码:

static MonoString* Sample ()
{
  return mono_string_new (mono_domain_get(), "Hello!");
}
mono_add_internal_call ("Hello::Sample", Sample);

C#代码:

using System;
using System.Runtime.CompilerServices;

class Hello {
    [MethodImplAttribute(MethodImplOptions.InternalCall)]
    extern static string Sample ();
}

谢谢

【问题讨论】:

  • 看看 C++/CLI(或 P/Invoke,如果你能满足你的模型要求)。
  • @LucasTrzesniewski 如果我使用 CLR-Hosting 加载 C# Dll 并使用 P/Invoke,c++ 二进制文件是否与加载 C# Dll 相同?
  • 嗯... AFAIK P/Invoke 在后台调用 LoadLibrary,因此它应该最终解析为已加载的 HMODULE,从而解析为相同的地址空间。但我从未尝试过,也不确定,所以最好的判断方法是尝试一下。
  • @LucasTrzesniewski P/Invoke 有效,实例相同。谢谢!

标签: c# c++ mono clr clr-hosting


【解决方案1】:

我现在使用 P/Invoke,而不是“mono_add_internal_call”。它具有相同的结果。因此,如果您使用 CLR-Hosting 调用 C# DLL,P/Invoke 会调用 CLR-Hosting Dll 而不会创建新实例。

感谢卢卡斯。

【讨论】:

  • 那你是怎么做的呢?
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 2017-02-28
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多