EXE可以调用启动它的DLL吗?

时间:2016-06-08 23:23:43

标签: c# c++ windows dll

  • EXE'A'是用C#编写的。 “A”调用DLL“B”,也是用C#编写的。
  • DLL“B”调用CreateProcess启动第二个EXE“C”。 “C”是用本机C ++,Win32编写的。
  • 'C'需要能够调用DLL'B'中的函数,因为'B'知道一个句柄,它可以从'{{1}获取信息}}”。句柄将作为全局变量存储在A

我知道如何从Native C ++ EXE调用托管C#DLL。

我的问题是:如何让B回复CB如何找到C

2 个答案:

答案 0 :(得分:2)

不,它不能。

DLL和EXE处于不同的进程中,您无法在不同的进程中调用函数。

答案 1 :(得分:-2)

直接回答:是的,你可以。但这是一个非常烦人的过程。你必须在B中创建一个回调,C需要接收这个回调。

所以这里有一些链接可以帮助你加载非托管DLL。

http://timtrott.co.uk/calling-win32-dlls/
Is it possible to use win32 DLLs in C#?
https://msdn.microsoft.com/en-us/library/aa719104%28v=vs.71%29.aspx

以下是如何创建回调:
Howto implement callback interface from unmanaged DLL to .net app?

我的建议是,避免这样做。非托管dll只能在"请求中使用并返回"模式,这意味着它们只响应来自调用者的请求,并且调用者等待dll完成该过程。