Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从DLL向同一进程的EXE中实现的COM对象进行无注册接口调用?_Com_Reg Free - Fatal编程技术网

如何从DLL向同一进程的EXE中实现的COM对象进行无注册接口调用?

如何从DLL向同一进程的EXE中实现的COM对象进行无注册接口调用?,com,reg-free,Com,Reg Free,现在大家都知道如何在无注册环境中对DLL实现的COM对象进行接口调用。问题恰恰相反: 如何从DLL调用EXE中实现的COM对象?应使用哪些清单和清单部分 编辑:可能不太清楚,但我指的是过程中的通话。我想在同一进程中调用一个对象,但它是在EXE中实现的,而不是在DLL中实现的 EDIT2:好吧,我看到事情变得复杂了,所以我必须解释最初的问题。C++应用程序实现IApplication接口,并将指向它的指针作为一个成员。此成员由可通过AfxGetApp()从任何位置访问的公共方法返回 还有一种机制允

现在大家都知道如何在无注册环境中对DLL实现的COM对象进行接口调用。问题恰恰相反:

如何从DLL调用EXE中实现的COM对象?应使用哪些清单和清单部分

编辑:可能不太清楚,但我指的是过程中的通话。我想在同一进程中调用一个对象,但它是在EXE中实现的,而不是在DLL中实现的

EDIT2:好吧,我看到事情变得复杂了,所以我必须解释最初的问题。C++应用程序实现IApplication接口,并将指向它的指针作为一个成员。此成员由可通过AfxGetApp()从任何位置访问的公共方法返回

还有一种机制允许任何客户向我们的应用程序添加他自己的C#“插件”DLL。对于此类DLL,IAApplication接口是应用程序功能的关键访问点。但是这些DLL无法访问主应用程序的对象

为了解决这个问题,我添加了一个辅助的“ICreateApplication”对象,它返回原始的iaapplication指针。任何“插件”DLL都可以创建此辅助对象,并从中获取所需的接口。我在一些任意选择的DLL中实现了这个对象,并为它配备了必要的清单


这个解决方案效果很好,但这种“任意选择”让我感到困扰。我想知道,是否有可能在应用程序对象中实现“ICreateApplication”?

从@HansPassant开始阅读,我知道“EXE”COM服务器存在问题,但我的问题是关于进程内对象。请看已更正的问题。你的问题标题糟透了。还完全不清楚为什么不允许服务器知道有关DLL的任何信息。它加载它以便更好地了解它。就像一个入口点,它可以传递一个接口指针,因此根本不需要让COM找到服务器。@HansPassant,你是对的,但是要找到一个正确的“抽象”措辞而不解释整个问题并不简单。请参阅第二次编辑。