1

我需要在我的本机代码(c++)中使用托管动态链接库(c#)。我在这里找到了解决方案。( http://support.microsoft.com/kb/828736 )。

但困扰我的是..

1)在本机代码中使用的托管动态链接库是否通过 com 充当进程 com 服务器?. 如果是的话怎么可能?

2)如果不是,那么动态链接库如何在不被可执行文件携带的情况下充当外部进程com服务器。

4

2 回答 2

0

这是一个进程内配置。这并不比直接使用 P/Invoke 机制更“不可能”。当您运行regasm它时,它会对注册表进行必要的更改,以便在客户端调用CoCreateInstance()COM 时知道它需要从相应的 .NET 程序集中 P/Invoke 函数。

于 2013-10-07T09:05:56.883 回答
0
  1. COM 知道如何为托管 DLL 启动 CLR,因此这可以适用于可以在适当位数(即,AnyCPU 或 32/64 位)中运行的托管 DLL。
  2. 对于跨位 DLL,我相信CLR 知道如何启动 DllHost.exe 并在进程外运行托管 DLL。当然会慢一些。
于 2013-10-08T16:32:35.617 回答