我正在尝试使用ADTF SDK从我自己的C++ 命令行应用程序运行完整的 ADTF 配置。ADTF 版本:2.9.1(相当旧)。
这是我(想要)做的事情:
- 加载清单文件
- 加载 globals-xml
- 加载配置-xml
使用会话管理器服务完成 2 和 3 - 请参阅ISessionManager界面: https: //support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/classadtf_1_1_i_session_manager.html,函数LoadGlobalsFromFile和LoadConfigFromFile。
问题是我不知道如何做第 1 点:目前,我没有加载清单,而是使用_runtime->RegisterPlugin、_runtime->CreateInstance和_runtime->RegisterObject自己手动加载服务列表。
我设法做的是仅加载命名空间服务并使用INamespace接口,该接口具有加载清单文件的方法:https: //support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/classadtf_1_1_i_namespace.html - 请参阅ImportFile使用 ui32ImportFlags = CF_IMPORT_MANIFEST。
但这只会将清单设置加载到 namespace中,它实际上并没有实例化服务。我可以通过以下方式手动完成:
- 为命名空间中root/plugins/下 的每个url执行_runtime->RegisterPlugin
- 为命名空间中root/services/下 的每个objectid执行_runtime->CreateInstance
但我希望它更健壮,我希望已经有一个服务可以随后处理填充的命名空间并执行这些操作。有这样的服务吗?
注意:如果您知道如何在ADTF3中完成这可能对我也有帮助,请不要犹豫回答/评论
更新
请参阅此页面上的“系统流程”:https: //support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/page_service_layer.html
显然,运行时实例本身处理清单文件(请参阅运行级别关闭和内核),但我不知道我应该如何告诉它它在哪里。
在实例化cRuntime时,我尝试将命令行参数设置为count = 2和2nd = manifest 文件路径。它不起作用:)。