【MITK】基础概念-C++微服务之模块上下文

在C ++ Micro Services库的上下文中,我们将统一调用所有支持的“共享库”类型(如DLL,DSO,DyLib等)作为模块。一个模块通过其特有的ModuleContext对象访问C ++ Micro Services API。

1 创建一个模块上下文

有两种方法来为特定库创建一个ModuleContext对象:

  1. 如果项目使用CMake作为构建系统,可使用提供的#usFunctionGenerateModuleInit CMake函数来自动创建源文件并将其添加到模块的源文件中:
set(module_srcs )
usFunctionGenerateModuleInit(module_srcs)
add_library(mylib ${module_srcs})
set_property(TARGET ${mylib} APPEND PROPERTY COMPILE_DEFINITIONS US_MODULE_NAME=mylib)

你还需要使用US_MODULE_NAME来为模块指定唯一的名称,如最后一行所示。模块名称必须是有效的C标识符,如果是可执行文件,则需要将其定义为main。

  1. 如果你不使用CMake,则必须在模块的其中一个源文件中添加对宏US_INITIALIZE_MODULE的调用:
#include <usModuleInitialization.h>
US_INITIALIZE_MODULE

2 获取一个模块上下文

使用#GetModuleContext函数,可在模块中的任何位置检索特定模块的ModuleContext对象:

#include <usGetModuleContext.h>
#include <usModule.h>
#include <usModuleContext.h>
US_USE_NAMESPACE
void RetrieveModuleContext()
{
	ModuleContext* context = GetModuleContext();
	Module* module = context->GetModule();
	std::cout << "Module name: " << module->GetName() << " [id: " << module->GetModuleId() << "]\n";
}

请注意,尝试使用#GetModuleContext,而在使用共享库中没有正确的初始化代码,同时导致编译或运行时的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值