A
'是用C#编写的。 “A
”调用DLL“B
”,也是用C#编写的。B
”调用CreateProcess
启动第二个EXE“C
”。 “C
”是用本机C ++,Win32编写的。C
'需要能够调用DLL'B
'中的函数,因为'B
'知道一个句柄,它可以从'{{1}获取信息}}”。句柄将作为全局变量存储在A
。我知道如何从Native C ++ EXE调用托管C#DLL。
我的问题是:如何让B
回复C
? B
如何找到C
?
答案 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完成该过程。