【发布时间】:2010-11-17 10:31:47
【问题描述】:
我需要在传统的 Web 应用程序使用的直接 C++(无 ATL)中实现一个准系统 COM 对象,以检查我的应用程序是否存在。 Web 应用程序执行以下操作(JavaScript):
var object = new ActiveXObject("My.Application");
我想确保上述操作成功,但这就是我需要做的全部 - 我不需要在此对象上实现任何方法/属性,因为它们从未被调用过。
显然我需要通过添加必要的注册表设置等来确保我的对象已注册。我的应用程序是一个 DLL,所以我想我还需要实现一些导出的函数(DllRegisterServer、DllUnregisterServer、DllCanUnloadNow 和一个那必须是这样的东西,DllGetClassObject)。
我很确定,简单地从 DllGetClassObject 返回 S_OK 不会解决问题。
如何在不使用 ATL 的情况下实现基本接口?如果有帮助,我正在使用 MS 编译器。
【问题讨论】:
-
你为什么不想要 ATL?
-
这是我被告知不要使用的依赖项。恐怕我会失手。
-
这太简单了。您可以静态链接到 ATL,因此您不需要随身携带 ATL.dll - 甚至没有人会看到它并且它将为您节省大量时间和错误。最好的办法是协商 ATL 的使用。