在.Net 4.5中从DLL Main调用托管代码的任何方法

时间:2013-06-09 05:25:16

标签: c# .net

如何在.Net 4.5中从DLL Main调用托管代码?

我正在尝试开发一个在远程进程中执行托管代码的应用程序。

目前,我开发了一个Cpp dll,它在DLLMain中加载托管程序集并执行静态方法。

我使用CreateRemotedThread使远程进程调用LoadLibrary来加载cpp dll并自动执行dllmain。

现在我遇到了异常:在OS Loader锁中尝试托管执行。不要尝试在DllMain或图像初始化函数中运行托管代码,因为这样做会导致应用程序挂起。

在MSDN和谷歌搜索后,我注意到根本原因是在Dllmain中执行托管代码

所以我的问题是:

  1. 在我的情况下以任何方式调用托管代码
  2. 和其他解决方案可以在远程进程中执行托管代码

1 个答案:

答案 0 :(得分:0)

从非托管代码调用托管代码的最简单方法是为托管代码程序集启用COM可见性,然后使用COM从非托管代码中调用它。

这里有一个很好的例子;它已经很老了,但它仍然相关:

http://support.microsoft.com/kb/828736