- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在将应用程序从 Visual Studio C++ 6.0 转换为 Visual Studio 2008,但遇到了 ATL 问题。
我遇到了一大堆问题,但这是两个不同编译器之间返回值不同的第一个调用。
以下行在使用 VC++ 6.0 编译时返回 S-OK。在 VS 2008 中运行时,它返回 S-FALSE。根据 MSDN 文档,这意味着它找不到任何要注册的类。
_Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, REGCLS_MULTIPLEUSE)
如有任何帮助,我们将不胜感激。谢谢!
最佳答案
我也遇到了与 RegisterClassObjects
意外返回 S_FALSE
相关的问题。在我的场景中,在遗留 C++/ATL/COM 项目中,服务状态并未从Starting 更改为Running。 RegisterClassObjects
返回 S_FALSE
(实际上是一条警告消息),因为:
_ATL_NO_COM_SUPPORT
未被定义)*.EXE
中没有定义 COM 对象调用堆栈
*ppEntry
始终为 NULLAtlComModuleRegisterClassObjects
CAltExeModule.RegisterClassObjects
CAtlServiceModuleT.PreMessageLoop
RegisterClassObjects
未返回 S_OK
,则服务状态未更新为Running后续步骤
您可以使用的选项取决于您的情况。为什么调用 RegisterClassObjects
?为什么没有检测到 COM 对象?
以我为例:
RegisterClassObjects
被调用_ATL_NO_COM_SUPPORT
来禁用 COM,因为我没有完全理解对我一无所知的应用程序进行此类更改的影响if (FAILED(hr))
替换为 if (SUCCEEDED(hr))
所以我确保 AtlComModuleRegisterClassObjects
能够在自动映射中找到有效的 COM 对象(由 pComModule->m_ppAutoObjMapFirst
引用)
语境
引用文献
鉴于我对 COM 和 ATL 知之甚少,我发现这个陈述真的让我大开眼界:
ATL Services are designed to serve COM objects. You failed to provide any objects in the object map. Technically, ATL is working even better - it detects there are no objects to serve, so there's no point in starting the service at all... The fault is yours - for using ATL in an unsupported way. This said however, it's very simple to remove the function call registering the objects...
[SOURCE: ATL Services and 2003]
关于c++ - RegisterClassObjects() 找不到要注册的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1743087/
我正在将应用程序从 Visual Studio C++ 6.0 转换为 Visual Studio 2008,但遇到了 ATL 问题。 我遇到了一大堆问题,但这是两个不同编译器之间返回值不同的第一个调
我遇到了一个我无法理解的编译错误。我有两个使用 WLT 8.0 的 C++ 项目。我正在使用 VS2005 来编译两者。一个在 Win XP 或 7 上运行,另一个在 CE 上运行。它们都包含 WLT
我是一名优秀的程序员,十分优秀!