0

我试图弄清楚这是如何工作的:

  • 我有一个 .NET dll,比如 NETDll.dll,我没有要修改的源代码。
  • 我想在我的 C++ 项目中使用该 NETDll.dll,它将创建一个本机 dll,比如 NativeDll.dll

所以这就是我认为的问题所在(我可能是错的):

  • 由于我的 NativeDll.dll 是原生的,所以它不能是 CLR/CLI dll。本机 dll 没有运行时引擎,但 CLR 有。

我该怎么做?感谢您的任何建议。

4

2 回答 2

1

您将不得不在 .NET 程序集中将某些内容公开为 COM。

于 2013-05-10T15:03:46.470 回答
1

您的本机 DLL 可以是混合模式的本机和 .NET 程序集,使用 C++/CLI。Google 或在此处搜索“#pragma managed”/“#pragma unmanaged”,或查看任何有关 C++/CLI 的书籍。基本上,假设你有 Visual C++ 2010 或 2012,你可以这样写:

#pragma unmanaged

int main()
{
  CallManagedTrampoline();
}

#pragma managed

void CallManagedTrampoline()
{
  TypeFromDotnetDLL t = new TypeFromDotnetDLL();
  t.CallSomething();
}

事实上,根据 .NET DLL 中的详细信息,您甚至可能不需要将托管的#pragma 放在 CallManagedTrampoline() 调用之前——有时您可以直接从非托管代码中调用。C++/CLI 是你的朋友。

于 2013-06-15T22:30:54.327 回答